kdschlosser / ati_radeon

Python bindings to ati radeon video cards
MIT License
7 stars 1 forks source link

OverflowError #1

Open JustUsers opened 4 years ago

JustUsers commented 4 years ago

C:\Python27\python.exe D:/py/996-ati_radeon-master/example.py Traceback (most recent call last): File "D:/py/996-ati_radeon-master/example.py", line 27, in import pyamd_adl File "D:\py\996-ati_radeon-master\pyamd_adl__init__.py", line 62, in from .adl_sdk_h import Adapters as _Adapters File "D:\py\996-ati_radeon-master\pyamd_adl\adl_sdk_h.py", line 27, in from .adl_structures_h import # NOQA File "D:\py\996-ati_radeon-master\pyamd_adl\adl_structures_h.py", line 26, in from .adl_defines_h import # NOQA File "D:\py\996-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 555, in ADL_STEREO_AUTO_VERTICAL = Constant(1 << 31).set_string('Stereo Auto Vertical') OverflowError: Python int too large to convert to C long

kdschlosser commented 4 years ago

I have corrected your problem above only to come to another issue. This issue only exists if you run the program using 32 bit python. It looks like you might be using 32 bit python 2.7. Try using python 2.7 x64 and see if it works. I know that it does run on Python 3.7 x64 and I have tested this.

This library is still under development mind you and not all things have been tested. I have not tested changing any of the settings. I do not know what the ADL has built into it in terms of protection against making an incorrect setting change. I have not tested this portion of the library just yet because I have a fear of possibly breaking something in my computer. Until I build a crap PC out of parts I have kicking around and an older (cheap) video card I do not care so much about I strongly suggest against changing any of the settings.So heed my warning there, and understand that I am not responsible if some kind of a problem occurs. I do not believe that AMD would allow for this to happen I am not able to tell you if that is the case with 100% certainty. I do not think you can cause any issues with changing the brightness or contrast of a display or changing the fan speed. But I do however think that changing the clock speed of the memory or the core could if AMD did not build in any kind of protection.

The example only enumerates the current settings.

I believe the connector indexes are a way to identify the displays as seen in the Windows Screen Resolution control panel. how you may the connector index to the display number that is show in the control panel is add 1 to it.

Here is an example of how to change the brightness on display 1. I do not know if it works or not I haven't tested it.

from __future__ import print_function
import pyamd_adl

for adapter in pyamd_adl.adapters:
    for connector in adapter:
        if connector.index + 1 != 1:
            continue

        display = connector.display
        if display is None:
            raise RuntimeError('No display is connected to connector index ', connector.index + 1)

        supported = display.is_brightness_supported
        print('supports brightness adjustment:', supported)
        if supported:
            brightness = display.brightness
            current_brightness = brightness.real
            import time

            while brightness < brightness.max:
                brightness += brightness.step
                time.sleep(0.02)

            while brightness > brightness.min:
                brightness -= brightness.step
                time.sleep(0.02)

            while brightness < current_brightness:
                brightness += brightness.step
                time.sleep(0.02)
JustUsers commented 4 years ago

thank you very much! example.py is ready to run, but it seems that there are still some problems, such as:

Traceback (most recent call last):
  File "D:\test\993-ati_radeon-master\example.py", line 58, in <module>
    print('bus_speed:', adapter.bus_speed)
  File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 2608, in bus_speed
    return overdrive.bus_speed
  File "D:\test\993-ati_radeon-master\pyamd_adl\overdriven_h.py", line 473, in bus_speed
    return self._performance_stats.iCurrentBusSpeed.value
AttributeError:'int' object has no attribute'value'

-------------------------------------------------- -
Traceback (most recent call last):
  File "D:\test\993-ati_radeon-master\example.py", line 65, in <module>
    print(' min:', power_control.min)
AttributeError:'NoneType' object has no attribute'min'

-------------------------------------------------- -
Traceback (most recent call last):
  File "D:\test\993-ati_radeon-master\example.py", line 72, in <module>
    for temperature in temperatures:
TypeError:'NoneType' object is not iterable

and many more

I look forward to optimization of this, thank you

kdschlosser commented 4 years ago

There are so many different "flavors" of the ATI video card and not all of them support all of the variations and combinations of setings. I only have a single card I am testing with at the moment. So until I get more feedback like what you are providing me I am not going to be able to tweak the library to get it working 100% correctly.

what version of Python are you using?

kdschlosser commented 4 years ago

I also wanted to mention That my video card uses overdrive 5, it would seem that your card uses overdrive N. I changed the modeling of how I am handling the overdrive settings. I did this with the overdrive 5 class and I have not done it with the other overdrive classes. I will work on getting overdrive N modeled in the same fashion. It is probably going to take me a day to do. I have also not been able to work through any bugs in any of the other overdrive classes. You will have to work through the issue with me. In order to do that any errors or tracebacks you get you will need to post the entire traceback for me this way I can follow the trail to isolate where the issue is.

JustUsers commented 4 years ago

windows10 x64 + python 2.7.10(64-bit)

and I tried to modify "example2.py" like this (To find out more traceback at once) :

example2.py (click to show) ``` # -*- coding: utf-8 -*- # # *********************************************************************************** # MIT License # # Copyright (c) 2020 Kevin G. Schlosser # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is furnished # to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # *********************************************************************************** from __future__ import print_function import pyamd_adl import traceback for adapter in pyamd_adl.adapters: try:print('id:', adapter.id) except:print(str(traceback.format_exc())) try:print('name:', adapter.name) except:print(str(traceback.format_exc())) try:print('index:', adapter.index) except:print(str(traceback.format_exc())) try:print('device_number:', adapter.device_number) except:print(str(traceback.format_exc())) try:print('bus_number:', adapter.bus_number) except:print(str(traceback.format_exc())) try:print('vendor_id:', adapter.vendor_id) except:print(str(traceback.format_exc())) try:print('supports_edid_management:', adapter.supports_edid_management) except:print(str(traceback.format_exc())) try:print('is_overdrive_enabled:', adapter.is_overdrive_enabled) except:print(str(traceback.format_exc())) try:print('is_overdrive_supported:', adapter.is_overdrive_supported) except:print(str(traceback.format_exc())) try:print('overdrive_version:', adapter.overdrive_version) except:print(str(traceback.format_exc())) try:print('supported_aspects:', adapter.supported_aspects) except:print(str(traceback.format_exc())) try:print('udid:', adapter.udid) except:print(str(traceback.format_exc())) try:print('function_number:', adapter.function_number) except:print(str(traceback.format_exc())) try:print('is_present:', adapter.is_present) except:print(str(traceback.format_exc())) try:print('exists:', adapter.exists) except:print(str(traceback.format_exc())) try:print('driver_path:', adapter.driver_path) except:print(str(traceback.format_exc())) try:print('driver_path_ext:', adapter.driver_path_ext) except:print(str(traceback.format_exc())) try:print('upnp_path:', adapter.upnp_path) except:print(str(traceback.format_exc())) try:print('display_index:', adapter.display_index) except:print(str(traceback.format_exc())) try:print('driver_index:', adapter.driver_index) except:print(str(traceback.format_exc())) try:print('screen_config_name:', adapter.screen_config_name) except:print(str(traceback.format_exc())) try:print('asic_family_type:', adapter.asic_family_type) except:print(str(traceback.format_exc())) try:print('can_change_speed:', adapter.can_change_speed) except:print(str(traceback.format_exc())) try:print('speed:', adapter.speed) except:print(str(traceback.format_exc())) try:print('default_speed:', adapter.default_speed) except:print(str(traceback.format_exc())) try:print('is_gpu_accessable:', adapter.is_gpu_accessable) except:print(str(traceback.format_exc())) try:print('is_power_control_supported:', adapter.is_power_control_supported) except:print(str(traceback.format_exc())) try:print('bus_speed:', adapter.bus_speed) except:print(str(traceback.format_exc())) try:print('bus_lanes:', adapter.bus_lanes) except:print(str(traceback.format_exc())) try:print('max_bus_lanes:', adapter.bus_lanes.max) except:print(str(traceback.format_exc())) try:print() except:print(str(traceback.format_exc())) print('power_control') try:power_control = adapter.power_control except:print(str(traceback.format_exc())) try:print(' value:', power_control) except:print(str(traceback.format_exc())) try:print(' min:', power_control.min) except:print(str(traceback.format_exc())) try:print(' max:', power_control.max) except:print(str(traceback.format_exc())) try:print(' step:', power_control.step) except:print(str(traceback.format_exc())) try:print(' default:', power_control.default) except:print(str(traceback.format_exc())) print() print('temperatures') try: temperatures = adapter.temperatures for temperature in temperatures: print(' :', temperature) except:print(str(traceback.format_exc())) print() print('fan_speeds') try: for fan_speed in adapter.fan_speeds: print(' speed:', fan_speed, fan_speed.unit_of_measure) print(' min:', fan_speed.min, fan_speed.unit_of_measure) print(' max:', fan_speed.max, fan_speed.unit_of_measure) print(' automatic:', fan_speed.automatic) print() except:print(str(traceback.format_exc())) print() print('firmware') try: firmware = adapter.firmware try:print(' date:', firmware.date) except:print(str(traceback.format_exc())) try:print(' part_number:', firmware.part_number) except:print(str(traceback.format_exc())) try:print(' version:', firmware.version) except:print(str(traceback.format_exc())) except:print(str(traceback.format_exc())) print() print('core') try:core = adapter.core except:print(str(traceback.format_exc())) try:voltages = core.voltages except:print(str(traceback.format_exc())) try:clocks = core.clocks except:print(str(traceback.format_exc())) try:actual_clock = clocks.actual except:print(str(traceback.format_exc())) try:actual_voltage = voltages.actual except:print(str(traceback.format_exc())) try:load = core.load except:print(str(traceback.format_exc())) try:print(' actual clock:', actual_clock, actual_clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' actual voltage:', actual_voltage, actual_voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' load:', load, load.unit_of_measure) except:print(str(traceback.format_exc())) print() print(' clocks') try: for clock in clocks: try:print(' clock:', clock, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', clock.step, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', clock.default, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', clock.min, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', clock.max, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', clock.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print(' voltages') try: for voltage in voltages: try:print(' clock:', voltage, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', voltage.step, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', voltage.default, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', voltage.min, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', voltage.max, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', voltage.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('memory') try:memory = adapter.memory except:print(str(traceback.format_exc())) try:clocks = memory.clocks except:print(str(traceback.format_exc())) try:actual_clock = clocks.actual except:print(str(traceback.format_exc())) try:print(' size:', memory.size) except:print(str(traceback.format_exc())) try:print(' type:', memory.type) except:print(str(traceback.format_exc())) try:print(' bandwidth:', memory.bandwidth) except:print(str(traceback.format_exc())) try:print(' actual_clock:', actual_clock, actual_clock.unit_of_measure) except:print(str(traceback.format_exc())) print() print(' clocks') try: for clock in clocks: try:print(' clock:', clock, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', clock.step, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', clock.default, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', clock.min, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', clock.max, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', clock.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('crossfire') try:crossfire = adapter.crossfire except:print(str(traceback.format_exc())) try:print(' is_prefered_adapter:', crossfire.is_prefered_adapter) except:print(str(traceback.format_exc())) try:print(' is_combination_supported:', crossfire.is_combination_supported) except:print(str(traceback.format_exc())) try:print(' state:', crossfire.state) except:print(str(traceback.format_exc())) print() print('crossdisplay') try:crossdisplay = adapter.crossdisplay except:print(str(traceback.format_exc())) print() print('fps') try:fps = adapter.fps except:print(str(traceback.format_exc())) try:print(' is_supported:', fps.is_supported) except:print(str(traceback.format_exc())) try:print(' version:', fps.version) except:print(str(traceback.format_exc())) try:print(' type:', fps.type) except:print(str(traceback.format_exc())) try:print(' is_enabled:', fps.is_enabled) except:print(str(traceback.format_exc())) try:print(' value:', fps.value) except:print(str(traceback.format_exc())) try:print(' maximum:', fps.maximum) except:print(str(traceback.format_exc())) try:print(' minimum:', fps.minimum) except:print(str(traceback.format_exc())) print() print('error_records') try:error_records = adapter.error_records except:print(str(traceback.format_exc())) try: for i, record in enumerate(error_records): try:print(' record_number:', i) except:print(str(traceback.format_exc())) try:print(' severity:', record.severity) except:print(str(traceback.format_exc())) try:print(' is_count_valid:', record.is_count_valid) except:print(str(traceback.format_exc())) try:print(' count:', record.count) except:print(str(traceback.format_exc())) try:print(' is_valid_location:', record.is_location_valid) except:print(str(traceback.format_exc())) try:print(' cu:', record.cu) except:print(str(traceback.format_exc())) try:print(' location_name:', record.location_name) except:print(str(traceback.format_exc())) try:print(' timestamp:', record.timestamp) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('connectors') print() for connector in adapter: try:print(' type:', connector.type) except:print(str(traceback.format_exc())) try:print(' index:', connector.index) except:print(str(traceback.format_exc())) print() print(' display') try:display = connector.display except:print(str(traceback.format_exc())) try: if display is None: print(' None') else: try:print(' name:', display.name) except:print(str(traceback.format_exc())) try:print(' manufacturer:', display.manufacturer) except:print(str(traceback.format_exc())) try:print(' type:', display.type) except:print(str(traceback.format_exc())) try:print(' output_type:', display.output_type) except:print(str(traceback.format_exc())) try:print(' is_preserve_aspect_ratio_supported:', display.is_preserve_aspect_ratio_supported) except:print(str(traceback.format_exc())) try:print(' preserve_aspect_ratio_default:', display.preserve_aspect_ratio_default) except:print(str(traceback.format_exc())) try:print(' preserve_aspect_ratio:', display.preserve_aspect_ratio) except:print(str(traceback.format_exc())) try:print(' is_image_expansion_supported:', display.is_image_expansion_supported) except:print(str(traceback.format_exc())) try:print(' image_expansion_default:', display.image_expansion_default) except:print(str(traceback.format_exc())) try:print(' image_expansion:', display.image_expansion) except:print(str(traceback.format_exc())) try:print(' dither:', display.dither) except:print(str(traceback.format_exc())) try:print(' supported_pixel_formats:', display.supported_pixel_formats) except:print(str(traceback.format_exc())) try:print(' pixel_format:', display.pixel_format) except:print(str(traceback.format_exc())) try:print(' adjustment_coherent_default:', display.adjustment_coherent_default) except:print(str(traceback.format_exc())) try:print(' adjustment_coherent:', display.adjustment_coherent) except:print(str(traceback.format_exc())) try:print(' reduced_blanking_default:', display.reduced_blanking_default) except:print(str(traceback.format_exc())) try:print(' reduced_blanking:', display.reduced_blanking) except:print(str(traceback.format_exc())) try:print(' formats_override_supported:', display.formats_override_supported) except:print(str(traceback.format_exc())) try:print(' formats_override_supported_ex:', display.formats_override_supported_ex) except:print(str(traceback.format_exc())) try:print(' formats_override:', display.formats_override) except:print(str(traceback.format_exc())) try:print(' supported_color_depths:', display.supported_color_depths) except:print(str(traceback.format_exc())) try:print(' color_depth:', display.color_depth) except:print(str(traceback.format_exc())) try:print(' is_gpu_scaling_supported:', display.is_gpu_scaling_supported) except:print(str(traceback.format_exc())) try:print(' gpu_scaling_default:', display.gpu_scaling_default) except:print(str(traceback.format_exc())) try:print(' gpu_scaling:', display.gpu_scaling) except:print(str(traceback.format_exc())) try:print(' supported_contents:', display.supported_contents) except:print(str(traceback.format_exc())) try:print(' content:', display.content) except:print(str(traceback.format_exc())) try:print(' is_virtual_super_resolution_supported:', display.is_virtual_super_resolution_supported) except:print(str(traceback.format_exc())) try:print(' virtual_super_resolution:', display.virtual_super_resolution) except:print(str(traceback.format_exc())) try:print(' is_expansion_mode_supported:', display.is_expansion_mode_supported) except:print(str(traceback.format_exc())) try:print(' expansion_mode:', display.expansion_mode) except:print(str(traceback.format_exc())) print() try:print(' is_freesync_supported:', display.is_freesync_supported) except:print(str(traceback.format_exc())) try:freesync = display.freesync except:print(str(traceback.format_exc())) print(' freesync') try:print(' mode:', freesync.mode) except:print(str(traceback.format_exc())) try:print(' default_mode:', freesync.default_mode) except:print(str(traceback.format_exc())) try:print(' min_refresh:', freesync.min_refresh) except:print(str(traceback.format_exc())) try:print(' max_refresh:', freesync.max_refresh) except:print(str(traceback.format_exc())) print() try:deflicker = display.deflicker except:print(str(traceback.format_exc())) print(' deflicker') try:print(' value:', deflicker) except:print(str(traceback.format_exc())) try:print(' default:', deflicker.default) except:print(str(traceback.format_exc())) try:print(' min:', deflicker.min) except:print(str(traceback.format_exc())) try:print(' max:', deflicker.max) except:print(str(traceback.format_exc())) try:print(' step:', deflicker.step) except:print(str(traceback.format_exc())) print() try:filter_svideo = display.filter_svideo except:print(str(traceback.format_exc())) print(' filter_svideo') try:print(' value:', filter_svideo) except:print(str(traceback.format_exc())) try:print(' default:', filter_svideo.default) except:print(str(traceback.format_exc())) try:print(' min:', filter_svideo.min) except:print(str(traceback.format_exc())) try:print(' max:', filter_svideo.max) except:print(str(traceback.format_exc())) try:print(' step:', filter_svideo.step) except:print(str(traceback.format_exc())) print() try:print(' is_brightness_supported:', display.is_brightness_supported) except:print(str(traceback.format_exc())) brightness = display.brightness try:print(' brightness') except:print(str(traceback.format_exc())) try:print(' value:', brightness) except:print(str(traceback.format_exc())) try:print(' default:', brightness.default) except:print(str(traceback.format_exc())) try:print(' min:', brightness.min) except:print(str(traceback.format_exc())) try:print(' max:', brightness.max) except:print(str(traceback.format_exc())) try:print(' step:', brightness.step) except:print(str(traceback.format_exc())) try:print() except:print(str(traceback.format_exc())) try:print(' is_contrast_supported:', display.is_contrast_supported) except:print(str(traceback.format_exc())) try:contrast = display.contrast except:print(str(traceback.format_exc())) print(' contrast') try:print(' value:', contrast) except:print(str(traceback.format_exc())) try:print(' default:', contrast.default) except:print(str(traceback.format_exc())) try:print(' min:', contrast.min) except:print(str(traceback.format_exc())) try:print(' max:', contrast.max) except:print(str(traceback.format_exc())) try:print(' step:', contrast.step) except:print(str(traceback.format_exc())) print() try:print(' is_saturation_supported:', display.is_saturation_supported) except:print(str(traceback.format_exc())) try:saturation = display.saturation except:print(str(traceback.format_exc())) print(' saturation') try:print(' value:', saturation) except:print(str(traceback.format_exc())) try:print(' default:', saturation.default) except:print(str(traceback.format_exc())) try:print(' min:', saturation.min) except:print(str(traceback.format_exc())) try:print(' max:', saturation.max) except:print(str(traceback.format_exc())) try:print(' step:', saturation.step) except:print(str(traceback.format_exc())) print() try:print(' is_hue_supported:', display.is_hue_supported) except:print(str(traceback.format_exc())) try:hue = display.hue except:print(str(traceback.format_exc())) print(' hue') try:print(' value:', hue) except:print(str(traceback.format_exc())) try:print(' default:', hue.default) except:print(str(traceback.format_exc())) try:print(' min:', hue.min) except:print(str(traceback.format_exc())) try:print(' max:', hue.max) except:print(str(traceback.format_exc())) try:print(' step:', hue.step) except:print(str(traceback.format_exc())) print() try:print(' is_color_temperature_supported:', display.is_color_temperature_supported) except:print(str(traceback.format_exc())) try:print(' color_temperature_source:', display.color_temperature_source) except:print(str(traceback.format_exc())) try:print(' color_temperature_source_default:', display.color_temperature_source_default) except:print(str(traceback.format_exc())) try:color_temperature = display.color_temperature except:print(str(traceback.format_exc())) print(' color_temperature') try:print(' value:', color_temperature) except:print(str(traceback.format_exc())) try:print(' default:', color_temperature.default) except:print(str(traceback.format_exc())) try:print(' min:', color_temperature.min) except:print(str(traceback.format_exc())) try:print(' max:', color_temperature.max) except:print(str(traceback.format_exc())) try:print(' step:', color_temperature.step) except:print(str(traceback.format_exc())) print() try:print(' is_overscan_supported:', display.is_overscan_supported) except:print(str(traceback.format_exc())) try:overscan = display.overscan except:print(str(traceback.format_exc())) print(' overscan') try:print(' value:', overscan) except:print(str(traceback.format_exc())) try:print(' default:', overscan.default) except:print(str(traceback.format_exc())) try:print(' min:', overscan.min) except:print(str(traceback.format_exc())) try:print(' max:', overscan.max) except:print(str(traceback.format_exc())) try:print(' step:', overscan.step) except:print(str(traceback.format_exc())) print() try:print(' is_underscan_supported:', display.is_underscan_supported) except:print(str(traceback.format_exc())) try:underscan = display.underscan except:print(str(traceback.format_exc())) print(' underscan') try:print(' value:', underscan) except:print(str(traceback.format_exc())) try:print(' default:', underscan.default) except:print(str(traceback.format_exc())) try:print(' min:', underscan.min) except:print(str(traceback.format_exc())) try:print(' max:', underscan.max) except:print(str(traceback.format_exc())) try:print(' step:', underscan.step) except:print(str(traceback.format_exc())) print() try:position = display.position except:print(str(traceback.format_exc())) print(' position') try:print(' is_horizontal_position_supported:', position.is_horizontal_position_supported) except:print(str(traceback.format_exc())) try:x = position.x except:print(str(traceback.format_exc())) print(' x') try:print(' value:', x) except:print(str(traceback.format_exc())) try:print(' default:', x.default) except:print(str(traceback.format_exc())) try:print(' min:', x.min) except:print(str(traceback.format_exc())) try:print(' max:', x.max) except:print(str(traceback.format_exc())) try:print(' step:', x.step) except:print(str(traceback.format_exc())) print() try:print(' is_vertical_position_supported:', position.is_vertical_position_supported) except:print(str(traceback.format_exc())) try:y = position.y except:print(str(traceback.format_exc())) print(' y') try:print(' value:', y) except:print(str(traceback.format_exc())) try:print(' default:', y.default) except:print(str(traceback.format_exc())) try:print(' min:', y.min) except:print(str(traceback.format_exc())) try:print(' max:', y.max) except:print(str(traceback.format_exc())) try:print(' step:', y.step) except:print(str(traceback.format_exc())) print() try:size = display.size except:print(str(traceback.format_exc())) print(' size') try:print(' is_horizontal_size_supported:', size.is_horizontal_size_supported) except:print(str(traceback.format_exc())) try:width = size.width except:print(str(traceback.format_exc())) print(' width') try:print(' value:', width) except:print(str(traceback.format_exc())) try:print(' default:', width.default) except:print(str(traceback.format_exc())) try:print(' min:', width.min) except:print(str(traceback.format_exc())) try:print(' max:', width.max) except:print(str(traceback.format_exc())) try:print(' step:', width.step) except:print(str(traceback.format_exc())) print() try:print(' is_vertical_size_supported:', size.is_vertical_size_supported) except:print(str(traceback.format_exc())) try:height = size.height except:print(str(traceback.format_exc())) print(' height') try:print(' value:', height) except:print(str(traceback.format_exc())) try:print(' default:', height.default) except:print(str(traceback.format_exc())) try:print(' min:', height.min) except:print(str(traceback.format_exc())) try:print(' max:', height.max) except:print(str(traceback.format_exc())) try:print(' step:', height.step) except:print(str(traceback.format_exc())) print() print(' supported_connections') try: for supported_connection in connector: try:print(' name:', supported_connection.name) except:print(str(traceback.format_exc())) try:print(' supports_bitrate:', supported_connection.supports_bitrate) except:print(str(traceback.format_exc())) try:print(' supports_number_of_lanes:', supported_connection.supports_number_of_lanes) except:print(str(traceback.format_exc())) try:print(' supports_three_d_caps:', supported_connection.supports_three_d_caps) except:print(str(traceback.format_exc())) try:print(' supports_output_bandwidth:', supported_connection.supports_output_bandwidth) except:print(str(traceback.format_exc())) try:print(' supports_color_depth:', supported_connection.supports_color_depth) except:print(str(traceback.format_exc())) try:print(' is_connected:', supported_connection.is_connected) except:print(str(traceback.format_exc())) try:print(' bitrate:', supported_connection.bitrate) except:print(str(traceback.format_exc())) try:print(' number_of_lanes:', supported_connection.number_of_lanes) except:print(str(traceback.format_exc())) try:print(' three_d_caps:', supported_connection.three_d_caps) except:print(str(traceback.format_exc())) try:print(' output_bandwidth:', supported_connection.output_bandwidth) except:print(str(traceback.format_exc())) try:print(' color_depth:', supported_connection.color_depth) except:print(str(traceback.format_exc())) print() except: print(str(traceback.format_exc())) except:print(str(traceback.format_exc())) print('\n\n\n\n\n\n') ```

The following is the running result:

result (click to show) ``` id: 1016212864 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: None Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 87, in try:print('bus_speed:', adapter.bus_speed) File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 2608, in bus_speed return overdrive.bus_speed File "D:\test\993-ati_radeon-master\pyamd_adl\overdriven_h.py", line 473, in bus_speed return self._performance_stats.iCurrentBusSpeed.value AttributeError: 'int' object has no attribute 'value' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 89, in try:print('bus_lanes:', adapter.bus_lanes) File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 2613, in bus_lanes return overdrive.bus_lanes File "D:\test\993-ati_radeon-master\pyamd_adl\overdriven_h.py", line 469, in bus_lanes return self._performance_stats.iCurrentBusLanes.value AttributeError: 'int' object has no attribute 'value' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 91, in try:print('max_bus_lanes:', adapter.bus_lanes.max) File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 2613, in bus_lanes return overdrive.bus_lanes File "D:\test\993-ati_radeon-master\pyamd_adl\overdriven_h.py", line 469, in bus_lanes return self._performance_stats.iCurrentBusLanes.value AttributeError: 'int' object has no attribute 'value' power_control value: None Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 100, in try:print(' min:', power_control.min) AttributeError: 'NoneType' object has no attribute 'min' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 102, in try:print(' max:', power_control.max) AttributeError: 'NoneType' object has no attribute 'max' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 104, in try:print(' step:', power_control.step) AttributeError: 'NoneType' object has no attribute 'step' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 106, in try:print(' default:', power_control.default) AttributeError: 'NoneType' object has no attribute 'default' temperatures Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 113, in for temperature in temperatures: TypeError: 'NoneType' object is not iterable fan_speeds Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 119, in for fan_speed in adapter.fan_speeds: TypeError: 'NoneType' object is not iterable firmware date: 2017/04/07 02:49 part_number: 113-4E353PU-S4H version: 015.050.002.001 core Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 146, in try:actual_clock = clocks.actual AttributeError: 'NoneType' object has no attribute 'actual' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 148, in try:actual_voltage = voltages.actual AttributeError: 'NoneType' object has no attribute 'actual' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 152, in try:print(' actual clock:', actual_clock, actual_clock.unit_of_measure) NameError: name 'actual_clock' is not defined Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 154, in try:print(' actual voltage:', actual_voltage, actual_voltage.unit_of_measure) NameError: name 'actual_voltage' is not defined Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 156, in try:print(' load:', load, load.unit_of_measure) AttributeError: 'NoneType' object has no attribute 'unit_of_measure' clocks Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 161, in for clock in clocks: TypeError: 'NoneType' object is not iterable voltages Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 179, in for voltage in voltages: TypeError: 'NoneType' object is not iterable memory Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 201, in try:actual_clock = clocks.actual AttributeError: 'NoneType' object has no attribute 'actual' size: 4294967296 type: GDDR5 bandwidth: 246400 Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 209, in try:print(' actual_clock:', actual_clock, actual_clock.unit_of_measure) NameError: name 'actual_clock' is not defined clocks Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 215, in for clock in clocks: TypeError: 'NoneType' object is not iterable crossfire is_prefered_adapter: None is_combination_supported: False state: Could not obtain current status crossdisplay fps is_supported: True version: 1 type: Not Enabled is_enabled: False value: -1 maximum: -1 minimum: -1 error_records connectors type: DVI-D index: 4 display Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 303, in try:display = connector.display File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\993-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 307, in if display is None: NameError: name 'display' is not defined type: HDMI-Type A index: 2 display Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 303, in try:display = connector.display File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\993-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 307, in if display is None: NameError: name 'display' is not defined type: HDMI-Type A index: 3 display Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 303, in try:display = connector.display File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\993-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 307, in if display is None: NameError: name 'display' is not defined type: DisplayPort index: 0 display Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 303, in try:display = connector.display File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\993-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 307, in if display is None: NameError: name 'display' is not defined type: DisplayPort index: 1 display Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 303, in try:display = connector.display File "D:\test\993-ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\993-ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' Traceback (most recent call last): File "D:\test\993-ati_radeon-master\example2.py", line 307, in if display is None: NameError: name 'display' is not defined ```
kdschlosser commented 4 years ago

Do me a favor. can you edit your last response and add this before the code block


<details>
  <summary>example.py (click to show)</summary>

and this after the code block

</details>

make sure you leave a blank line before the triple ticks at the top of the code block and also a blank line after the triple ticks at the end of the code block.

You will end up with the following.

example.py (click to show) ``` # -*- coding: utf-8 -*- # # *********************************************************************************** # MIT License # # Copyright (c) 2020 Kevin G. Schlosser # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is furnished # to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # *********************************************************************************** from __future__ import print_function import pyamd_adl import traceback for adapter in pyamd_adl.adapters: try:print('id:', adapter.id) except:print(str(traceback.format_exc())) try:print('name:', adapter.name) except:print(str(traceback.format_exc())) try:print('index:', adapter.index) except:print(str(traceback.format_exc())) try:print('device_number:', adapter.device_number) except:print(str(traceback.format_exc())) try:print('bus_number:', adapter.bus_number) except:print(str(traceback.format_exc())) try:print('vendor_id:', adapter.vendor_id) except:print(str(traceback.format_exc())) try:print('supports_edid_management:', adapter.supports_edid_management) except:print(str(traceback.format_exc())) try:print('is_overdrive_enabled:', adapter.is_overdrive_enabled) except:print(str(traceback.format_exc())) try:print('is_overdrive_supported:', adapter.is_overdrive_supported) except:print(str(traceback.format_exc())) try:print('overdrive_version:', adapter.overdrive_version) except:print(str(traceback.format_exc())) try:print('supported_aspects:', adapter.supported_aspects) except:print(str(traceback.format_exc())) try:print('udid:', adapter.udid) except:print(str(traceback.format_exc())) try:print('function_number:', adapter.function_number) except:print(str(traceback.format_exc())) try:print('is_present:', adapter.is_present) except:print(str(traceback.format_exc())) try:print('exists:', adapter.exists) except:print(str(traceback.format_exc())) try:print('driver_path:', adapter.driver_path) except:print(str(traceback.format_exc())) try:print('driver_path_ext:', adapter.driver_path_ext) except:print(str(traceback.format_exc())) try:print('upnp_path:', adapter.upnp_path) except:print(str(traceback.format_exc())) try:print('display_index:', adapter.display_index) except:print(str(traceback.format_exc())) try:print('driver_index:', adapter.driver_index) except:print(str(traceback.format_exc())) try:print('screen_config_name:', adapter.screen_config_name) except:print(str(traceback.format_exc())) try:print('asic_family_type:', adapter.asic_family_type) except:print(str(traceback.format_exc())) try:print('can_change_speed:', adapter.can_change_speed) except:print(str(traceback.format_exc())) try:print('speed:', adapter.speed) except:print(str(traceback.format_exc())) try:print('default_speed:', adapter.default_speed) except:print(str(traceback.format_exc())) try:print('is_gpu_accessable:', adapter.is_gpu_accessable) except:print(str(traceback.format_exc())) try:print('is_power_control_supported:', adapter.is_power_control_supported) except:print(str(traceback.format_exc())) try:print('bus_speed:', adapter.bus_speed) except:print(str(traceback.format_exc())) try:print('bus_lanes:', adapter.bus_lanes) except:print(str(traceback.format_exc())) try:print('max_bus_lanes:', adapter.bus_lanes.max) except:print(str(traceback.format_exc())) try:print() except:print(str(traceback.format_exc())) print('power_control') try:power_control = adapter.power_control except:print(str(traceback.format_exc())) try:print(' value:', power_control) except:print(str(traceback.format_exc())) try:print(' min:', power_control.min) except:print(str(traceback.format_exc())) try:print(' max:', power_control.max) except:print(str(traceback.format_exc())) try:print(' step:', power_control.step) except:print(str(traceback.format_exc())) try:print(' default:', power_control.default) except:print(str(traceback.format_exc())) print() print('temperatures') try: temperatures = adapter.temperatures for temperature in temperatures: print(' :', temperature) except:print(str(traceback.format_exc())) print() print('fan_speeds') try: for fan_speed in adapter.fan_speeds: print(' speed:', fan_speed, fan_speed.unit_of_measure) print(' min:', fan_speed.min, fan_speed.unit_of_measure) print(' max:', fan_speed.max, fan_speed.unit_of_measure) print(' automatic:', fan_speed.automatic) print() except:print(str(traceback.format_exc())) print() print('firmware') try: firmware = adapter.firmware try:print(' date:', firmware.date) except:print(str(traceback.format_exc())) try:print(' part_number:', firmware.part_number) except:print(str(traceback.format_exc())) try:print(' version:', firmware.version) except:print(str(traceback.format_exc())) except:print(str(traceback.format_exc())) print() print('core') try:core = adapter.core except:print(str(traceback.format_exc())) try:voltages = core.voltages except:print(str(traceback.format_exc())) try:clocks = core.clocks except:print(str(traceback.format_exc())) try:actual_clock = clocks.actual except:print(str(traceback.format_exc())) try:actual_voltage = voltages.actual except:print(str(traceback.format_exc())) try:load = core.load except:print(str(traceback.format_exc())) try:print(' actual clock:', actual_clock, actual_clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' actual voltage:', actual_voltage, actual_voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' load:', load, load.unit_of_measure) except:print(str(traceback.format_exc())) print() print(' clocks') try: for clock in clocks: try:print(' clock:', clock, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', clock.step, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', clock.default, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', clock.min, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', clock.max, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', clock.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print(' voltages') try: for voltage in voltages: try:print(' clock:', voltage, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', voltage.step, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', voltage.default, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', voltage.min, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', voltage.max, voltage.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', voltage.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('memory') try:memory = adapter.memory except:print(str(traceback.format_exc())) try:clocks = memory.clocks except:print(str(traceback.format_exc())) try:actual_clock = clocks.actual except:print(str(traceback.format_exc())) try:print(' size:', memory.size) except:print(str(traceback.format_exc())) try:print(' type:', memory.type) except:print(str(traceback.format_exc())) try:print(' bandwidth:', memory.bandwidth) except:print(str(traceback.format_exc())) try:print(' actual_clock:', actual_clock, actual_clock.unit_of_measure) except:print(str(traceback.format_exc())) print() print(' clocks') try: for clock in clocks: try:print(' clock:', clock, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' step:', clock.step, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' default:', clock.default, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' min:', clock.min, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' max:', clock.max, clock.unit_of_measure) except:print(str(traceback.format_exc())) try:print(' is_active:', clock.is_active) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('crossfire') try:crossfire = adapter.crossfire except:print(str(traceback.format_exc())) try:print(' is_prefered_adapter:', crossfire.is_prefered_adapter) except:print(str(traceback.format_exc())) try:print(' is_combination_supported:', crossfire.is_combination_supported) except:print(str(traceback.format_exc())) try:print(' state:', crossfire.state) except:print(str(traceback.format_exc())) print() print('crossdisplay') try:crossdisplay = adapter.crossdisplay except:print(str(traceback.format_exc())) print() print('fps') try:fps = adapter.fps except:print(str(traceback.format_exc())) try:print(' is_supported:', fps.is_supported) except:print(str(traceback.format_exc())) try:print(' version:', fps.version) except:print(str(traceback.format_exc())) try:print(' type:', fps.type) except:print(str(traceback.format_exc())) try:print(' is_enabled:', fps.is_enabled) except:print(str(traceback.format_exc())) try:print(' value:', fps.value) except:print(str(traceback.format_exc())) try:print(' maximum:', fps.maximum) except:print(str(traceback.format_exc())) try:print(' minimum:', fps.minimum) except:print(str(traceback.format_exc())) print() print('error_records') try:error_records = adapter.error_records except:print(str(traceback.format_exc())) try: for i, record in enumerate(error_records): try:print(' record_number:', i) except:print(str(traceback.format_exc())) try:print(' severity:', record.severity) except:print(str(traceback.format_exc())) try:print(' is_count_valid:', record.is_count_valid) except:print(str(traceback.format_exc())) try:print(' count:', record.count) except:print(str(traceback.format_exc())) try:print(' is_valid_location:', record.is_location_valid) except:print(str(traceback.format_exc())) try:print(' cu:', record.cu) except:print(str(traceback.format_exc())) try:print(' location_name:', record.location_name) except:print(str(traceback.format_exc())) try:print(' timestamp:', record.timestamp) except:print(str(traceback.format_exc())) print() except:print(str(traceback.format_exc())) print() print('connectors') print() for connector in adapter: try:print(' type:', connector.type) except:print(str(traceback.format_exc())) try:print(' index:', connector.index) except:print(str(traceback.format_exc())) print() print(' display') try:display = connector.display except:print(str(traceback.format_exc())) try: if display is None: print(' None') else: try:print(' name:', display.name) except:print(str(traceback.format_exc())) try:print(' manufacturer:', display.manufacturer) except:print(str(traceback.format_exc())) try:print(' type:', display.type) except:print(str(traceback.format_exc())) try:print(' output_type:', display.output_type) except:print(str(traceback.format_exc())) try:print(' is_preserve_aspect_ratio_supported:', display.is_preserve_aspect_ratio_supported) except:print(str(traceback.format_exc())) try:print(' preserve_aspect_ratio_default:', display.preserve_aspect_ratio_default) except:print(str(traceback.format_exc())) try:print(' preserve_aspect_ratio:', display.preserve_aspect_ratio) except:print(str(traceback.format_exc())) try:print(' is_image_expansion_supported:', display.is_image_expansion_supported) except:print(str(traceback.format_exc())) try:print(' image_expansion_default:', display.image_expansion_default) except:print(str(traceback.format_exc())) try:print(' image_expansion:', display.image_expansion) except:print(str(traceback.format_exc())) try:print(' dither:', display.dither) except:print(str(traceback.format_exc())) try:print(' supported_pixel_formats:', display.supported_pixel_formats) except:print(str(traceback.format_exc())) try:print(' pixel_format:', display.pixel_format) except:print(str(traceback.format_exc())) try:print(' adjustment_coherent_default:', display.adjustment_coherent_default) except:print(str(traceback.format_exc())) try:print(' adjustment_coherent:', display.adjustment_coherent) except:print(str(traceback.format_exc())) try:print(' reduced_blanking_default:', display.reduced_blanking_default) except:print(str(traceback.format_exc())) try:print(' reduced_blanking:', display.reduced_blanking) except:print(str(traceback.format_exc())) try:print(' formats_override_supported:', display.formats_override_supported) except:print(str(traceback.format_exc())) try:print(' formats_override_supported_ex:', display.formats_override_supported_ex) except:print(str(traceback.format_exc())) try:print(' formats_override:', display.formats_override) except:print(str(traceback.format_exc())) try:print(' supported_color_depths:', display.supported_color_depths) except:print(str(traceback.format_exc())) try:print(' color_depth:', display.color_depth) except:print(str(traceback.format_exc())) try:print(' is_gpu_scaling_supported:', display.is_gpu_scaling_supported) except:print(str(traceback.format_exc())) try:print(' gpu_scaling_default:', display.gpu_scaling_default) except:print(str(traceback.format_exc())) try:print(' gpu_scaling:', display.gpu_scaling) except:print(str(traceback.format_exc())) try:print(' supported_contents:', display.supported_contents) except:print(str(traceback.format_exc())) try:print(' content:', display.content) except:print(str(traceback.format_exc())) try:print(' is_virtual_super_resolution_supported:', display.is_virtual_super_resolution_supported) except:print(str(traceback.format_exc())) try:print(' virtual_super_resolution:', display.virtual_super_resolution) except:print(str(traceback.format_exc())) try:print(' is_expansion_mode_supported:', display.is_expansion_mode_supported) except:print(str(traceback.format_exc())) try:print(' expansion_mode:', display.expansion_mode) except:print(str(traceback.format_exc())) print() try:print(' is_freesync_supported:', display.is_freesync_supported) except:print(str(traceback.format_exc())) try:freesync = display.freesync except:print(str(traceback.format_exc())) print(' freesync') try:print(' mode:', freesync.mode) except:print(str(traceback.format_exc())) try:print(' default_mode:', freesync.default_mode) except:print(str(traceback.format_exc())) try:print(' min_refresh:', freesync.min_refresh) except:print(str(traceback.format_exc())) try:print(' max_refresh:', freesync.max_refresh) except:print(str(traceback.format_exc())) print() try:deflicker = display.deflicker except:print(str(traceback.format_exc())) print(' deflicker') try:print(' value:', deflicker) except:print(str(traceback.format_exc())) try:print(' default:', deflicker.default) except:print(str(traceback.format_exc())) try:print(' min:', deflicker.min) except:print(str(traceback.format_exc())) try:print(' max:', deflicker.max) except:print(str(traceback.format_exc())) try:print(' step:', deflicker.step) except:print(str(traceback.format_exc())) print() try:filter_svideo = display.filter_svideo except:print(str(traceback.format_exc())) print(' filter_svideo') try:print(' value:', filter_svideo) except:print(str(traceback.format_exc())) try:print(' default:', filter_svideo.default) except:print(str(traceback.format_exc())) try:print(' min:', filter_svideo.min) except:print(str(traceback.format_exc())) try:print(' max:', filter_svideo.max) except:print(str(traceback.format_exc())) try:print(' step:', filter_svideo.step) except:print(str(traceback.format_exc())) print() try:print(' is_brightness_supported:', display.is_brightness_supported) except:print(str(traceback.format_exc())) brightness = display.brightness try:print(' brightness') except:print(str(traceback.format_exc())) try:print(' value:', brightness) except:print(str(traceback.format_exc())) try:print(' default:', brightness.default) except:print(str(traceback.format_exc())) try:print(' min:', brightness.min) except:print(str(traceback.format_exc())) try:print(' max:', brightness.max) except:print(str(traceback.format_exc())) try:print(' step:', brightness.step) except:print(str(traceback.format_exc())) try:print() except:print(str(traceback.format_exc())) try:print(' is_contrast_supported:', display.is_contrast_supported) except:print(str(traceback.format_exc())) try:contrast = display.contrast except:print(str(traceback.format_exc())) print(' contrast') try:print(' value:', contrast) except:print(str(traceback.format_exc())) try:print(' default:', contrast.default) except:print(str(traceback.format_exc())) try:print(' min:', contrast.min) except:print(str(traceback.format_exc())) try:print(' max:', contrast.max) except:print(str(traceback.format_exc())) try:print(' step:', contrast.step) except:print(str(traceback.format_exc())) print() try:print(' is_saturation_supported:', display.is_saturation_supported) except:print(str(traceback.format_exc())) try:saturation = display.saturation except:print(str(traceback.format_exc())) print(' saturation') try:print(' value:', saturation) except:print(str(traceback.format_exc())) try:print(' default:', saturation.default) except:print(str(traceback.format_exc())) try:print(' min:', saturation.min) except:print(str(traceback.format_exc())) try:print(' max:', saturation.max) except:print(str(traceback.format_exc())) try:print(' step:', saturation.step) except:print(str(traceback.format_exc())) print() try:print(' is_hue_supported:', display.is_hue_supported) except:print(str(traceback.format_exc())) try:hue = display.hue except:print(str(traceback.format_exc())) print(' hue') try:print(' value:', hue) except:print(str(traceback.format_exc())) try:print(' default:', hue.default) except:print(str(traceback.format_exc())) try:print(' min:', hue.min) except:print(str(traceback.format_exc())) try:print(' max:', hue.max) except:print(str(traceback.format_exc())) try:print(' step:', hue.step) except:print(str(traceback.format_exc())) print() try:print(' is_color_temperature_supported:', display.is_color_temperature_supported) except:print(str(traceback.format_exc())) try:print(' color_temperature_source:', display.color_temperature_source) except:print(str(traceback.format_exc())) try:print(' color_temperature_source_default:', display.color_temperature_source_default) except:print(str(traceback.format_exc())) try:color_temperature = display.color_temperature except:print(str(traceback.format_exc())) print(' color_temperature') try:print(' value:', color_temperature) except:print(str(traceback.format_exc())) try:print(' default:', color_temperature.default) except:print(str(traceback.format_exc())) try:print(' min:', color_temperature.min) except:print(str(traceback.format_exc())) try:print(' max:', color_temperature.max) except:print(str(traceback.format_exc())) try:print(' step:', color_temperature.step) except:print(str(traceback.format_exc())) print() try:print(' is_overscan_supported:', display.is_overscan_supported) except:print(str(traceback.format_exc())) try:overscan = display.overscan except:print(str(traceback.format_exc())) print(' overscan') try:print(' value:', overscan) except:print(str(traceback.format_exc())) try:print(' default:', overscan.default) except:print(str(traceback.format_exc())) try:print(' min:', overscan.min) except:print(str(traceback.format_exc())) try:print(' max:', overscan.max) except:print(str(traceback.format_exc())) try:print(' step:', overscan.step) except:print(str(traceback.format_exc())) print() try:print(' is_underscan_supported:', display.is_underscan_supported) except:print(str(traceback.format_exc())) try:underscan = display.underscan except:print(str(traceback.format_exc())) print(' underscan') try:print(' value:', underscan) except:print(str(traceback.format_exc())) try:print(' default:', underscan.default) except:print(str(traceback.format_exc())) try:print(' min:', underscan.min) except:print(str(traceback.format_exc())) try:print(' max:', underscan.max) except:print(str(traceback.format_exc())) try:print(' step:', underscan.step) except:print(str(traceback.format_exc())) print() try:position = display.position except:print(str(traceback.format_exc())) print(' position') try:print(' is_horizontal_position_supported:', position.is_horizontal_position_supported) except:print(str(traceback.format_exc())) try:x = position.x except:print(str(traceback.format_exc())) print(' x') try:print(' value:', x) except:print(str(traceback.format_exc())) try:print(' default:', x.default) except:print(str(traceback.format_exc())) try:print(' min:', x.min) except:print(str(traceback.format_exc())) try:print(' max:', x.max) except:print(str(traceback.format_exc())) try:print(' step:', x.step) except:print(str(traceback.format_exc())) print() try:print(' is_vertical_position_supported:', position.is_vertical_position_supported) except:print(str(traceback.format_exc())) try:y = position.y except:print(str(traceback.format_exc())) print(' y') try:print(' value:', y) except:print(str(traceback.format_exc())) try:print(' default:', y.default) except:print(str(traceback.format_exc())) try:print(' min:', y.min) except:print(str(traceback.format_exc())) try:print(' max:', y.max) except:print(str(traceback.format_exc())) try:print(' step:', y.step) except:print(str(traceback.format_exc())) print() try:size = display.size except:print(str(traceback.format_exc())) print(' size') try:print(' is_horizontal_size_supported:', size.is_horizontal_size_supported) except:print(str(traceback.format_exc())) try:width = size.width except:print(str(traceback.format_exc())) print(' width') try:print(' value:', width) except:print(str(traceback.format_exc())) try:print(' default:', width.default) except:print(str(traceback.format_exc())) try:print(' min:', width.min) except:print(str(traceback.format_exc())) try:print(' max:', width.max) except:print(str(traceback.format_exc())) try:print(' step:', width.step) except:print(str(traceback.format_exc())) print() try:print(' is_vertical_size_supported:', size.is_vertical_size_supported) except:print(str(traceback.format_exc())) try:height = size.height except:print(str(traceback.format_exc())) print(' height') try:print(' value:', height) except:print(str(traceback.format_exc())) try:print(' default:', height.default) except:print(str(traceback.format_exc())) try:print(' min:', height.min) except:print(str(traceback.format_exc())) try:print(' max:', height.max) except:print(str(traceback.format_exc())) try:print(' step:', height.step) except:print(str(traceback.format_exc())) print() print(' supported_connections') try: for supported_connection in connector: try:print(' name:', supported_connection.name) except:print(str(traceback.format_exc())) try:print(' supports_bitrate:', supported_connection.supports_bitrate) except:print(str(traceback.format_exc())) try:print(' supports_number_of_lanes:', supported_connection.supports_number_of_lanes) except:print(str(traceback.format_exc())) try:print(' supports_three_d_caps:', supported_connection.supports_three_d_caps) except:print(str(traceback.format_exc())) try:print(' supports_output_bandwidth:', supported_connection.supports_output_bandwidth) except:print(str(traceback.format_exc())) try:print(' supports_color_depth:', supported_connection.supports_color_depth) except:print(str(traceback.format_exc())) try:print(' is_connected:', supported_connection.is_connected) except:print(str(traceback.format_exc())) try:print(' bitrate:', supported_connection.bitrate) except:print(str(traceback.format_exc())) try:print(' number_of_lanes:', supported_connection.number_of_lanes) except:print(str(traceback.format_exc())) try:print(' three_d_caps:', supported_connection.three_d_caps) except:print(str(traceback.format_exc())) try:print(' output_bandwidth:', supported_connection.output_bandwidth) except:print(str(traceback.format_exc())) try:print(' color_depth:', supported_connection.color_depth) except:print(str(traceback.format_exc())) print() except: print(str(traceback.format_exc())) except:print(str(traceback.format_exc())) print('\n\n\n\n\n\n') ```

you are getting a bunch of tracebacks because of the overdrive version you are using. I am in the process of fixing that now. It is a pretty involved process for me to fix it because of the amount of work I need to do. There are 4 versions of overdrive and they all operate differently so I have to come up with a common API that all 4 versions can share. this way anyone using it is not going to have to know what version of overdrive they are using they are only going to need to know how to set the clock speed or how to set the memory voltage. the ADL is a nested rats maze and I am trying to turn it into something that is easy to use and understand how to use. The amount of code needed just to be able to provide the ability to get the information that the example.py file provides is massive, ay some 28000 lines of code. Naavigating that mount of code and changing things takes time to do. I do not want to cause problems elsewhere so it has to be done carefully and with quite a bit of planning beforhand.

kdschlosser commented 4 years ago

I do not want the user to have to put all of the try/except statements in their code. those statements are expensive to run and can be handled in the library it's self so the user will not have to deal with that kind of thing.

kdschlosser commented 4 years ago

OK I just finished updating the code. Go ahead and run the original example.py file. I know there are going to be errors so please paste the entire output to me. Do not change the example.py file at all I am looking for a specific behavior so it has to remain the same for the time being.

JustUsers commented 4 years ago

This is the result of the current run

result(click to show) ``` id: 1016212864 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: None bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 power_control value: None Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 65, in print(' min:', power_control.min) AttributeError: 'NoneType' object has no attribute 'min' ```
kdschlosser commented 4 years ago

Thanks for doing the expandable menu thing. You only need to do that with super long blocks of text. It makes it easier to scroll to the bottom of the posts. and it also minimizes GitHubs condensing of the posts.

I just did a push to the repo. so give it a go and see what you get this time. these are not working where they were not before. so that means I am on the right track!

bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16

make sure you use the example.py file included in my repo. I had to update it.

JustUsers commented 4 years ago

new result

result(click to show) ``` id: 1016212864 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 34.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1175 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2017/04/07 02:49 part_number: 113-4E353PU-S4H version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.718 VDC load: 0.0 % clocks Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 108, in for clock in clocks: File "D:\test\test\ati_radeon-master\pyamd_adl\overdriven_h.py", line 1077, in __iter__ iNumberOfPerformanceLevels = lpODCapabilities.iNumberOfPerformanceLevels AttributeError: '_ADLODNCapabilitiesX2' object has no attribute 'iNumberOfPerformanceLevels' ```

and this is a screenshot of GPUZ at the same time:

gpuz-1

kdschlosser commented 4 years ago

OK so comparing what this library does to GPUz may not give you the exact same information. reason being is that GPUz could be using Windows in order to collect some of it's information. The gpu temperature is different. This could be because of the reason i mention earlier or it could also be stale information in GPUz. I do not know how often it polls to collect the information.

I did a push to the repository again so we should be back up and running.

The fan speeds are listing correctly I have to come up with some kind of a better way to relay what is exactly going on. with overdrive n you have the ability to have the driver control the speed of the fan based on several things.

there are a couple of different types of controls.

you also have the ability to set whether the control of that type is automatic or manual. on your card it looks like the only control that is available is the acoustic control. this control is where you set the core clock at which you want the fan to be at max and it will handle it from there. The slider bar you are seeing in GPUz has a percentage. this is really misleading when you move that slider up towards 100% the fan gets faster and faster This would be the same thing as lowering the max core frequency in the fan control in this library and it is easy to get the percentage because you know the min and max and value.

JustUsers commented 4 years ago

new result

result(click to show) ``` id: 2092326144 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 29.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1175 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2017/04/07 02:49 part_number: 113-4E353PU-S4H version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.718 VDC load: 0.0 % clocks voltages memory size: 4294967296 type: GDDR5 bandwidth: 246400 actual_clock: 300 MHz clocks voltages crossfire is_prefered_adapter: None is_combination_supported: False state: Could not obtain current status crossdisplay fps is_supported: True version: 1 type: Not Enabled is_enabled: False value: -1 maximum: -1 minimum: -1 error_records connectors type: DVI-D index: 4 display Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 207, in display = connector.display File "D:\test\test\ati_radeon-master\pyamd_adl\adapter_h.py", line 1578, in display ADL_DISPLAY_CONTYPE_UNKNOWN: ADL_CONNECTOR_TYPE_UNKNOWN, File "D:\test\test\ati_radeon-master\pyamd_adl\adl_defines_h.py", line 134, in __hash__ return int.__hash__(self) TypeError: descriptor '__hash__' requires a 'int' object but received a 'Constant' ```
kdschlosser commented 4 years ago

getting further.

I just updated the code it should hopefully fix that issue.

kdschlosser commented 4 years ago

It appears as tho there is an issue with the memory and core clocks and voltages. I will have to add some error logging code to see what is happening.

JustUsers commented 4 years ago

new result

Please note that there are 2 graphics cards

result(click to show) ``` id: 2092326144 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 29.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1157 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2017/04/07 02:49 part_number: 113-4E353PU-S4H version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.718 VDC load: 0.0 % clocks voltages memory size: 4294967296 type: GDDR5 bandwidth: 246400 actual_clock: 300 MHz clocks voltages crossfire is_prefered_adapter: None is_combination_supported: False state: Could not obtain current status crossdisplay fps is_supported: True version: 1 type: Not Enabled is_enabled: False value: -1 maximum: -1 minimum: -1 error_records connectors type: DVI-D index: 4 display None supported_connections name: DVI-D supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: DVI-I supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None type: HDMI-Type A index: 2 display None supported_connections name: HDMI supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None type: HDMI-Type A index: 3 display None supported_connections name: HDMI supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None type: DisplayPort index: 0 display None supported_connections name: DisplayPort supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: DisplayPort --> HDMI (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: DisplayPort --> DVI-D (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: Display Branch supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: Active Dongle supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: True supports_output_bandwidth: True supports_color_depth: True is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None type: DisplayPort index: 1 display None supported_connections name: DisplayPort supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: DisplayPort --> HDMI (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: DisplayPort --> DVI-D (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: Display Branch supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None name: Active Dongle supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: True supports_output_bandwidth: True supports_color_depth: True is_connected: False bitrate: None number_of_lanes: None three_d_caps: None output_bandwidth: None color_depth: None id: 2145344768 name: AMD Radeon RX 580 2048SP index: 8 device_number: 0 bus_number: 10 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_6FDF&SUBSYS_0B311002&REV_EF_4&20221DEA&0&00E3A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{D6FDF769-95B8-11E9-B229-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0007 upnp_path: PCI\VEN_1002&DEV_6FDF&SUBSYS_0B311002&REV_EF\4&20221DEA&0&00E3 display_index: 24 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 25 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 30.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1157 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2018/12/20 21:49 part_number: xxx-xxx-xxx version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.75 VDC load: 0.0 % clocks voltages memory size: 8589934592 type: GDDR5 bandwidth: 249600 actual_clock: 300 MHz clocks Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 141, in for clock in clocks: TypeError: iter() returned non-iterator of type 'NoneType' ```
kdschlosser commented 4 years ago

OYE! Now I have another issue to fix. I am brain dead. I wasn't thinking when I set up the overdrive classes. I don't know why but the whole multiple adapter things didn't dawn on me.

Anywho I did update the code to log the returned values from the adl functions in the event that the call to the function is a failure. In some cases this is OK that it fails. the memory and core clocks and voltages are not population so a failure is happening and I need to know what the error message is.

I changed the example.py file so it turns on the debugging messages by default. You can turn it off by commenting out the line at the top of the example where it gets set.

I need to see the results with it turned on if you wouldn't mind. I will get the overdrive classes sorted out. I am going to have to put into place an instance singleton metaclass . you will need to have the six package installed into python for it to work. This is not going to be for the version that is currently available my next update is going to make this a requirement.

JustUsers commented 4 years ago

new result :-)

result with debugging messages(click to show) ``` id: 2092326144 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 29.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1157 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2017/04/07 02:49 part_number: 113-4E353PU-S4H version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.718 VDC load: 0.0 % clocks DEBUG:pyamd_adl:ADL2_OverdriveN_SystemClocksX2_Get : One of the parameter size is invalid (-4) DEBUG:pyamd_adl:ADL2_OverdriveN_SystemClocksX2_Get : One of the parameter size is invalid (-4) voltages DEBUG:pyamd_adl:ADL2_OverdriveN_SystemClocksX2_Get : One of the parameter size is invalid (-4) DEBUG:pyamd_adl:ADL2_OverdriveN_SystemClocksX2_Get : One of the parameter size is invalid (-4) memory size: 4294967296 type: GDDR5 bandwidth: 246400 actual_clock: 300 MHz clocks DEBUG:pyamd_adl:ADL2_OverdriveN_MemoryClocksX2_Get : One of the parameter size is invalid (-4) DEBUG:pyamd_adl:ADL2_OverdriveN_MemoryClocksX2_Get : One of the parameter size is invalid (-4) voltages DEBUG:pyamd_adl:ADL2_OverdriveN_MemoryClocksX2_Get : One of the parameter size is invalid (-4) DEBUG:pyamd_adl:ADL2_OverdriveN_MemoryClocksX2_Get : One of the parameter size is invalid (-4) crossfire DEBUG:pyamd_adl:ADL2_Adapter_Crossfire_Caps : Call can't be made due to disabled adapter (-10) is_prefered_adapter: None DEBUG:pyamd_adl:ADL2_Adapter_Crossfire_Get : Call can't be made due to disabled adapter (-10) is_combination_supported: False DEBUG:pyamd_adl:ADL2_Adapter_Crossfire_Get : Call can't be made due to disabled adapter (-10) state: Could not obtain current status crossdisplay fps is_supported: True version: 1 type: Not Enabled is_enabled: False value: -1 maximum: -1 minimum: -1 error_records DEBUG:pyamd_adl:ADL2_Adapter_EDC_ErrorRecords_Get : Call can't be made due to disabled adapter (-10) connectors type: DVI-D index: 4 display None supported_connections name: DVI-D supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: DVI-I supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None type: HDMI-Type A index: 2 display None supported_connections name: HDMI supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None type: HDMI-Type A index: 3 display None supported_connections name: HDMI supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None type: DisplayPort index: 0 display None supported_connections name: DisplayPort supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: DisplayPort --> HDMI (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: DisplayPort --> DVI-D (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: Display Branch supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: Active Dongle supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: True supports_output_bandwidth: True supports_color_depth: True is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None type: DisplayPort index: 1 display None supported_connections name: DisplayPort supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: DisplayPort --> HDMI (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: DisplayPort --> DVI-D (passive) supports_bitrate: False supports_number_of_lanes: False supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: Display Branch supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: False supports_output_bandwidth: False supports_color_depth: False is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None name: Active Dongle supports_bitrate: True supports_number_of_lanes: True supports_three_d_caps: True supports_output_bandwidth: True supports_color_depth: True is_connected: False DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) bitrate: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) number_of_lanes: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) three_d_caps: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) output_bandwidth: None DEBUG:pyamd_adl:ADL2_Adapter_ConnectionData_Get : Function not supported by the driver (-8) color_depth: None id: 2145344768 name: AMD Radeon RX 580 2048SP index: 8 device_number: 0 bus_number: 10 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_6FDF&SUBSYS_0B311002&REV_EF_4&20221DEA&0&00E3A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{D6FDF769-95B8-11E9-B229-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0007 upnp_path: PCI\VEN_1002&DEV_6FDF&SUBSYS_0B311002&REV_EF\4&20221DEA&0&00E3 display_index: 24 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 25 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 30.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1157 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False firmware date: 2018/12/20 21:49 part_number: xxx-xxx-xxx version: 015.050.002.001 core actual clock: 300 MHz actual voltage: 0.75 VDC load: 0.0 % clocks voltages memory size: 8589934592 type: GDDR5 bandwidth: 249600 actual_clock: 300 MHz clocks Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 144, in for clock in clocks: TypeError: iter() returned non-iterator of type 'NoneType' ```
JustUsers commented 4 years ago

new result "NameError: global name '_ADL2_Overdrive8_Init_SettingX2_Get' is not defined"

result(click to show) ``` id: 2104366016 name: Radeon RX 580 Series index: 0 device_number: 0 bus_number: 4 vendor_id: 1002 supports_edid_management: False is_overdrive_enabled: True is_overdrive_supported: True overdrive_version: 7 supported_aspects: ['Radeon3D', 'DisplaysColour2,DisplaysColour', 'DisplaysManager', 'DisplaysOptions', 'DeviceCRT2', 'DeviceLCD2', 'DeviceDFP2', 'MMVideo'] udid: PCI_VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7_6&AC5AF29&0&000800E0A function_number: 0 is_present: True exists: True driver_path: \Registry\Machine\System\CurrentControlSet\Control\Video\{600834F7-959F-11E9-B21F-806E6F6E6963}\0000 driver_path_ext: {4d36e968-e325-11ce-bfc1-08002be10318}\0005 upnp_path: PCI\VEN_1002&DEV_67DF&SUBSYS_E3531DA2&REV_E7\6&AC5AF29&0&000800E0 display_index: 8 driver_index: None screen_config_name: None asic_family_type: Discrete can_change_speed: False speed: Unforced default_speed: Unforced is_gpu_accessable: False is_power_control_supported: True bus_speed: 50 bus_lanes: 1 max_bus_lanes: 16 is_power_control_supported: True power_control value: 85 min: 35 max: 85 step: 1 default: None value: 0 min: -30 max: 30 step: 1 default: None temperatures : 27.0 fan_speeds speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False speed: 900 mhz min: 300 mhz max: 1175 mhz automatic: False speed: 0 Unsupported min: 0 Unsupported max: 0 Unsupported automatic: False zero controls: Traceback (most recent call last): File "D:\test\test\ati_radeon-master\example.py", line 95, in for control in zero_controls: File "D:\test\test\ati_radeon-master\pyamd_adl\overdriven_h.py", line 2186, in __iter__ _ADL2_Overdrive8_Init_SettingX2_Get( NameError: global name '_ADL2_Overdrive8_Init_SettingX2_Get' is not defined ```

And last year, I searched for a similar function and found this https://github.com/nicolargo/pyadl. Although it has not been updated for 3 years, And the function is limited, but it still works properly on "Radeon RX 580 Series", there should still be references, I hope it can help you. Your project looks very comprehensive, let us improve it together.

I can't express myself very well in English, hope i didn't offend you.

kdschlosser commented 4 years ago

you're English is fine, in fact you type it better then I do .. LOL

I did come across that library and it has extremely limited functionality. All of the parts I am working through bugs with are not in that library. Plus that library is only for display purposes. It does not allow you to change any of the cards settings. I have been fighting with the developers over at AMD and complaining about their laziness and not documenting and not documenting properly. And also them not responding to questions. It's extremely annoying to have to do what we are doing right now because they see fir not to answer questions and also have shit poor documentation.

So I apologize for having you go through this. I do promise I will get the issues sorted out don't you worry there. It's going to be some trial and error tho and it may take a while because of the time difference