Dynamic refresh rate under Windows 10 (I've an Amd video card) (2 Viewers)

Sebastiii

Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    Maybe it can instead of using the Windows provided display number (\\Display 1 etc..) use a unique display identifier, know that Ultramon does it this way with multi monitor setups which works pretty well.
    Hardware id identifier seems the safest as that is unique for the connected display and should never change, not sure how the device is re-attached during refresh rate change but maybe it can be forced to a device based on their unique ID instead of the display # which can be temporarily different during the switch.
    Just my 2 cents :coffee:

    Yep i have this idea too but not to strong in c# and c++ to do it (when i have try) maybe i could retry again :)

    Yesterday, i have try to use deviceid but it was the same deviceid for 2 screen(s) so same GPU card (i have both GPU on dev for testing).
    So need to find something else, with the recent change made ysterday, i use name + \\Display 1 etc. so it's better but maybe not full enough.

    Yep i have adapted the change too on MP.exe along with config.exe :)
    We will see what happen and see if we can force to not update setting.
    From what i have seen, it seems that the primary display can change (swap) when device if off (1920x1080).
    It's like Primary display can be 1600 or 1920. (Strange isn't it lol ?)

    Interesting, is it possibile that change is related to dynamic refresh rate? so during the refresh rate on the main display MP check its state and found that it's not active for a while so it try to use the other one?

    rembember the problem is sometimes when I start a play 24P on a 60 HZ, dynamic refresh rate start , the screen became blank for a while on the main display (It's correct), MP goes to other display for an instant (wrong) , and back to the main one but in a window not full screen with a messy playback

    Maybe it's related but if i remember correctly, when MP start, it use the monitor set in MP config, D3D device is using it and create a pointer for C++.
    So this D3D pointer never change and stay like this, MP windows can move his own window fullscreen or not but the D3D device stay the same.

    Know the delay introduce, can be that MP try to do a DRR to the non available screen. But it should not because it's not the screen used on start.

    I remember working on that part with @Owlsroost because before MP try to do refresh rate to a wrong monitor or non-existant one @vuego can explain too and before he must use eventghost to do a proper DRR.

    So for me MP can handle correctly the screen to refresh but if MP is somehow on a wrong screen maybe DRR didn't work correctly (long time we did this change but i think the code to ask for DRR enumerate all current detected screen and do a comparaison to the current MP used screen and start the DRR.

    So maybe the current MP used screen is fucked and then trigger the DRR delay.

    It will be really good to know how to reproduce it to know what happen exactly :)
     

    red5goahead

    MP Donator
  • Premium Supporter
  • November 24, 2007
    695
    144
    Italy, North West
    Home Country
    Italy Italy
    Sebastiii; please note the file attached. it's generated by Display Changer II utility. It's a xml file that extract some kind of information about devices and it used by the utility. I used these file in my script in a daily configuration to start and automatize the MP starting and exiting procedure.

    i 've a "normale" file (means normal so pc monitor+plasma tv) and a htpc (tv + pc or tv without pc monitor)

    <monitor id="256" adapterHigh="0" adapterLow="26506">
    <name>ASUS VS207</name>
    <!--source: the origin of the video signal-->
    <source id="0">
    <name>\\.\DISPLAY1</name>
    <path>\\?\PCI#VEN_1002&amp;DEV_6658&amp;SUBSYS_04581043&amp;REV_00#4&amp;320acff0&amp;0&amp;0010#{5b45201d-f2f2-4f3b-85bb-30ff1f953599}</path>
    </source>
    <size width="1600" height="900"/>

    <monitor id="261" adapterHigh="0" adapterLow="26506">
    <name>marantz-AVR</name>
    <!--source: the origin of the video signal-->
    <source id="1">
    <name>\\.\DISPLAY2</name>
    <path>\\?\PCI#VEN_1002&amp;DEV_6658&amp;SUBSYS_04581043&amp;REV_00#4&amp;320acff0&amp;0&amp;0010#{5b45201d-f2f2-4f3b-85bb-30ff1f953599}</path>
    </source>
    <size width="1920" height="1080"/>

    the ID attribute of monitor node and name node are different

    instead path attribute in the source id node it's the same for both devices as you said. probably it's a registry entry
     

    Attachments

    • normale.zip
      888 bytes

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    Will look you zip :)

    Just back from work, i have turned off my Acer monitor and turned on and look what i have :
    Tonight :
    Acer = screenumber 0
    Hyundai = screennumber 1
    Generic PnP Monitor = screennumber 2
    upload_2015-9-24_18-52-5.png



    This morning :
    Hyundai = screenumber 0
    Acer = screennumber 1
    Generic PnP Monitor = screennumber 2
    upload_2015-9-24_18-52-21.png


    So Windows change the \\.\DisplayX when turned off monitor after a while, i don't know and this can lead to your issue it seems :)
    So we really need to use something else because like above name + DISPLAYx can't be compared lol
     

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    So i just compare some "ID" take this morning and now :

    Morning :
    "MONITOR\\ACR0125\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0001"
    "MONITOR\\PHLC02C\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0002"
    "MONITOR\\IQT9D0B\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0004"

    Tonight :
    "MONITOR\\ACR0125\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0001"
    "MONITOR\\IQT9D0B\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0004"
    "MONITOR\\PHLC02C\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0002"

    So even if display number has change, the above ID aren't :)

    So i think i will try to select the monitor against this, will try lol (i hope i will succeed)
     

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    Ok did i tell you that i'm slow lol (i would like to be a dev with finger in the noose lol).

    So after few hours, i think i'm succeed to write device id (seems unique) so i will upload new bin for testing :)
     

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    Hi :)

    So the result in xml is :
    XML:
      <section name="screenselector">
        <entry name="screennumber">0</entry>
        <entry name="screendeviceid">MONITOR\ACR0125\{4d36e96e-e325-11ce-bfc1-08002be10318}\0001</entry>
      </section>
    :p
     
    Last edited:

    red5goahead

    MP Donator
  • Premium Supporter
  • November 24, 2007
    695
    144
    Italy, North West
    Home Country
    Italy Italy
    Ok, I hope the screen start selection will be user friendly so in my system a AsusVL207 (ID256) for the pc monitor and Marantz-AVR (ID261) for the TV Plasma (connected through the Avr). Those names and Id(s) should be available in the registry
     

    red5goahead

    MP Donator
  • Premium Supporter
  • November 24, 2007
    695
    144
    Italy, North West
    Home Country
    Italy Italy
    In my system in the devices I've two generic plug play monitors but you can read the xml generated by Display changer II the names are available, so keep searching :) note that Marantz-AVR it's also the name of the audio hdmi device in the audio device list
     

    Sebastiii

    Development Group
  • Team MediaPortal
  • November 12, 2007
    16,583
    10,403
    France
    Home Country
    France France
    Hey :)

    Now we can get Monitor name by registry (extracting EDID to get it) :)
    I'm not really happy from code POV but it works.
    I'm uploading bin and will post installer ASAP.

    So now, i can see my Philips Monitor name displayed (in MP config and MP GUI setting).

    upload_2015-9-25_21-11-36.png


    It's clear that it's more user friendly :)
     
    Last edited:

    Users who are viewing this thread

    Top Bottom