Giter VIP home page Giter VIP logo

Comments (23)

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 Thanks for the bug report. I'm currently troubleshooting something similar with color settings under #45, so I would really like you to do a couple of things for me:

  • Please download NVIDIAInfo v1.0.6 and use that to save two cfg files with the settings the same as you've made in DisplayMagician v2.0.1 e.g. one cfg for the 6008x1080 @ 75Hz and one for the 6008x1080 @ 70Hz. Then please attempt to 'load' each one and save the NVIDIAInfo.log file for each run. Then please reply in this issue and attach the NVIDIAInfo.log files along with the two cfg files you saved.
  • Please also send attach the DisplayProfiles_2.0.json file from your DisplayMagician profiles directory: c:\Users<username>\AppData\Local\DisplayMagician\Profiles\DisplayProfiles_2.0.json

Hopefully with both those two things I should be able to figure out what's happening there.

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 I've been doing some digging, and I can confirm that DisplayMagician v2.0.1 does in fact record the Refresh Rate. Here is my 144Hz setting:
image

Here is my 120Hz setting:
image

I can also confirm that it doesn't appear to be being applied :(. It looks like a bug in my WinLibrary CCD file as part of equality testing. The library incorrectly thinks that two profiles that are the same but have different Refresh Rates are equal. This is wrong.

It could well be the root of your issue, especially if the refresh rates are the only things that are different between the two profiles.

I'm going to do some further testing tonight and see if I can find and correct the error. Once I've done that will you be able to do some testing with NVIDIAInfo v1.0.7 (when I finish making it). NVIDIAInfo is a little program I've made that tests the video manipulation part of DisplayMagician, and it's where I do all the video library testing.

When I get the bug sorted I'll give you more specific instructions to test the new version of NVIDIAInfo when I make it.

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Right - can you please test NVIDIA-v1.0.7 here: https://github.com/terrymacdonald/NVIDIAInfo/releases/tag/v1.0.7

If this works, then I know where the issue is.

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

Here is one log file and my two configs. I only tested having the 70Hz profile and then loading the 75Hz profile.
I got this message in the cmd window: "The display settings in tri75.cfg are already installed. No need to install them again. Exiting."

I figured the exact thing would happen if I had the 75 active and then loaded the 70, so I didn't bother.
Btw, I renamed the configs to .txt otherwise I wouldn't be allowed to upload them.

NVIDIAInfo.log
.
tri70.txt
tri75.txt

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Hi @whitestar127

As part of testing, its REALLY important that you do each of the test that I ask, as it's often the difference between the two tests that I'm looking for. Just running a single test won't actually tell me enough to troubleshoot. As an example, the NVIDIA.log you sent me does show that the tri75.cfg was detected as already being installed, which means that NVIDIAInfo detected you were already running at 75Hz screen refresh rate... meaning that if you'd run the tri70.cfg then NVIDIAInfo.log would have determined there was a difference, and would have attempted to change the refresh rate which would have given more information. Or if it didn't want to change the refresh rate and gave another error, then I'd know where else to look.

So, can you please run the two test again, back to back. I need them both run again back to back so that I know they were run with the computer in the same state. It is possible that you (or some other software) has changed the refresh rate since the last NVIDIA.log was run, so by running the tests straight after each other I know that the tests are comparable.

After checking through the files you attached, it looks like the tri75.cfg and tri70.cfg are written correctly, and they both contain the refresh rates as expected.

So to find out more information, can you please:

  • Attempt to 'load' tri70.cfg and save the NVIDIAInfo.log file as tri70NVIDIAInfo.log.
  • Attempt to 'load' tri75.cfg and save the NVIDIAInfo.log file as tri75NVIDIAInfo.log.
  • Reply to this issue in your web browser and attach the tri70NVIDIAInfo.log and tri75NVIDIAInfo.log and I'll check them out ASAP.

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

And lastly, can you please confirm that you're changing the refresh rate on your Surround screen? In other words you've combined your 3 BENQ screens together into a single NVIDIA Surround screen, and then you're changing the refresh rate on that? I've not been testing that setup, only changing the fresh rates on single screens. That said, the code is the same for both, so it should be working (but it doesn't appear to).

Can you please take a screenshot of where you change the refresh rate settings for that surround screen? I'd like to be sure that I'm looking in the right place, as that often indicates where the setting lives. I found a refresh rate setting here in NVIDIA Control Panel:

image

Is that where you're setting yours?

If so, I can't test fresh rate changes myself, as my hardware only allows the single 60Hz refresh rate :(. That's going to mean you'll need to do more testing I'm afraid, if we're going to get to the bottom of this issue. I normally like to replicate the issue here so I have a better idea of when it's fixed, but I unfortunately can't do that with this issue.

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Lastly, I just noticed a bit of oddness in your cfg files.... they may indicate something weird but also may not.

The Mosaic Refresh rate thinks it's 144Hz (that's the NVIDIA Surround refresh rate):

"MosaicDisplaySettings": {
        "Version": 131096,
        "Width": 1920,
        "Height": 1080,
        "Bpp": 32,
        "Freq": 144,
        "Rrx1k": 0
      },

Whereas the Windows section of the cfg file thinks your screen is refresh rate of 70Hz (70000/1000=70):

"VSyncFreq": {
              "Numerator": 70000,
              "Denominator": 1000
            },

IIRC the NVIDIA NVAPI mosaic settings only returns the refresh rate of the primary monitor, so it may just be a red herring. My personal mosaic settings line up closer to the windows ones, as I have 59.551HZ for Windows, and 60Hz for Mosaic in my NVIDIA Surround profile.

As I said, it may be nothing, or it may be something. I'll need the results of your testing and your answers to my previous questions before I'll be able to confirm if this is an anomaly or not.

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

I can also confirm that NVIDIAInfo thinks the config files are different, so that removes the possibility that the equality tests aren't working properly. They are definitely working as intended...

PS NVIDIAInfo\bin\Debug> .\NVIDIAInfo.exe equal .\tri70.cfg .\tri75.cfg

NVIDIAInfo v1.0.7
=================
By Terry MacDonald 2021

The NVIDIA display settings in .\tri70.cfg and .\tri75.cfg are NOT equal.

That above example shows the equality test between those two config files you gave me. the NVIDIALibrary knows they are different, so they should be applied properly. Hopefully your tests will provide a pointer as to what could be wrong here.

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

I've also logged a forum request asking NVIDIA for confirmation on how the refresh setting functionality works. There documentation doesn't provide enough information, so I'm hoping they'll reply next week and give me some more tips: https://forums.developer.nvidia.com/t/programmatically-setting-refresh-rate-when-mosaic-surround-active/191624

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 There is a new version of NVIDIAInfo which may fix this issue. Can you please download and test NVIDIAInfo v1.0.8. I used NVIDIAInfo for testing just the display libraries, so that I can be sure I've actually fixed the problem without having any of the additional code from DisplayMagician to worry about.

NVIDIAInfo v1.0.8 has had a few important changes over the last few days as I've discovered some bugs, and added some changes to the way colour is applied. I've really like to know if these changes have fixed the refresh rate issue you were experiencing? If you could test NVIDIAInfo v1.0.8 for me. The release is here: https://github.com/terrymacdonald/NVIDIAInfo/releases/tag/v1.0.8

I'm really hopeful I've fixed this now, so getting confirmation would be ace!

Thanks
Terry

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

First of all: Yes I am sure I'm changing resolution while using Nvidia surround (3 screens combined to one).

I have now tested two ways of changing it:

  1. Using something called changescreenresolution to change resolution and/or refresh rate: https://tools.taubenkorb.at/change-screen-resolution/. As a side note, this is what I use normally (through an AutoHotkey script) to change my resolution, in both surround and multi mode.

  2. Using the NVIDIA Set Up Surround dialog as in your image above.

I have attached the two logs as per your instructions. However, looking through them it appears there is the same oddness that you noticed. The Mosaic refresh rate says 144 while the Windows section says 70 or 75 depending on the current refresh rate. And that's regardless of which of the two methods above I used to change the refresh rate.

Regarding changescreenresolution.exe, here's what its log typically looks like:

"Connected display devices:
[0] \.\DISPLAY1 NVIDIA GeForce RTX 3080
\.\DISPLAY1\Monitor0 ZOWIE XL LCD (DisplayPort)
Settings: 6008x1080 32bit @75Hz default

[1] \.\DISPLAY2 NVIDIA GeForce RTX 3080
[2] \.\DISPLAY3 NVIDIA GeForce RTX 3080
[3] \.\DISPLAY4 NVIDIA GeForce RTX 3080"

I have no idea how it actually changes refresh rate, I just know that it works.

Lastly, if you look at the image below, do you have any idea why in the Windows settings I can't select any other refresh rate than the current one, while in the Nvidia dialog I can select all the other ones?

tri70NVIDIAInfo.log
tri75NVIDIAInfo.log
refresh_rate

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Ok - so the thing that has me VERY confused, is that both those NVIDIA.log files you provided show that NVIDIAInfo thinks they are both equal, yet we know they are not!

Can you please run this command NVIDIAInfo equal tri70.cfg tri75.cfg and paste the results into this window? And just to be sure, can you please attach those exact same configs again to the reply so that I can be sure we're both testing the exact same versions of the files? I'm trying to figure out how your system is treating those files differently to my system.

I unfortunately don't know why those settings are different. Based on my testing with colour settings, it seems that NVIDIA can 'override' Windows display settings, so it's possible that the NVIDIA driver will give you more options for refresh rate too based on what it finds.

The annoying thing is that at the moment DisplayMagician (and NVIDIAInfo) records that information, and even tries to display it, but that at the moment we can't get past the profile 'equality' testing that I've put in place as a speed enhancement. This is all very odd, as the two profiles should be different!

Once you've sent me the tri70.cfg and tri75.cfg files again I'll check them for differences again locally, and confirm that NVIDIAInfo still sees them as different configs on my computer. Hopefully I can discern what is happening as this problem is really doing my head in!

Thanks
Terry

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

Here you go:

tri70.log
tri75.log
tri70_75

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Perfect thanks.

I've been hunting around in other people's code, and I think I've found the underlying issue. It think it's in the Windows CCD library I created. That library uses the Windows CCD DisplayConfig API to make changes to the windows display layout. It 'appeared' to make changes to the layout and the settings like refresh rates/colour settings during my testing, but after some research over the last couple of days I'm not so sure.

Soroush's WindowsDisplayAPI uses another windows API called DisplayContext to make changes to the settings, and it appears the ChangeScreenResolution programme does too. So I'm going to go implement that in the CCDInfo library, and then see if that makes things work.

So, in a week or so I will likely ask you to please test the refresh rate settings for CCDInfo for some non-surround window display refresh rate settings just to confirm that works. Please note CCDInfo won't work for surround displays, but it will allow me to confirm that the refresh rate setting works for you.

Once that's tested, then I'll port the library into NVIDIAInfo and you can test it works with surround layouts. I'm hopeful that at the end of this we'll have a fully working video library as originally promised.

The one downside of all this, is that we'll need to have people recreate their Display Profiles if they want specific refresh rates/colours.

Really appreciate your testing. Unfortunately as you can tell this stuff isn't simple, and a lot of it isn't well documented. It requires trial an error. But the result will be worth it!

Thanks
Terry

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

Sounds good, hopefully you can get it to work.
Yeah, the whole surround/triplescreen thing is clearly not a prioritized function for Nvidia. It used to be a real chore to switch between the different modes and change refresh rate.

Then I found that changeresolution program and a small script which used the surround switch shortcut key (default: Shift+Ctrl+s) to rapidly change to and from surround mode. Based on those two I made my own Autohotkey script with a small GUI that quickly lets me do it.

It uses keysends and pauses though, and that's not what you want for consistent and reliable performance. So I hope you get your software to work so we'll at last have a proper solution for this issue that honestly Nvidia should have provided a sensible solution for years ago.

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 I worked for a couple of hours today to try and shoehorn in my first attempt at colour settings/refresh rate setting storage into CCDInfo. CCDInfo helps me test the built-in windows library functions without any specific AMD or NVIDIA logic. It's the one that required the addition of the Windows GDI library functions that are used to manipulate colour settings and refresh rate.

Specifically, I'm using the EnumDisplayDevices and ChangeDisplaySettingsEx GDI functions to get and set the new device modes. These device modes have been around since Win95, and so I'm really puzzled why we have to still use them when Win10 brought out the CCD API which was supposed to replace the GDI one... but there you go.

The GDI libraries allow us to change the following settings:

  • dmBitsPerPel | Bits per pixel
  • dmPelsWidth | Pixel width
  • dmPelsHeight | Pixel height
  • dmDisplayFlags | Mode flags
  • dmDisplayFrequency | Mode frequency
  • dmPosition | Position of the device in a multi-monitor configuration.

I'm hoping that will cover most of the basic settings we need.

I've created a special alpha build of CCDInfo which doesn't have any of the special error checking or anything in it. It's really just the quickest build I could make to get you some code to test. I'd really appreciate it if you could test and see if that fixes your issues.

CCDInfo-v1.0.9b.zip

Please note, you won't be able to get it to enabled/disable your NVIDIA Surround settings for you, as CCDInfo doesnt know about that.

Instead, please perform the following tests:

TEST 1: Non-surround

  • Set up two different non-surround configs e.g. one with different primary screen, colour settings and refresh rates to the other one.
  • See if you can swap between them ok

TEST 2: Surround enabled

  • Now turn on NVIDIA Surround manually
  • Now set up two different surround-based configs e.g. one with different colour settings and refresh rates to the other one.
  • See if you can swap between the two surround profiles ok

If this works, then that means the new GDI API works for our needs. I will then be able to make the WinLibrary GDI code more reliable, and I'll then be able to add it into NVIDIAInfo as the next step.

Anyway... fingers crossed.

Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 I've made those same GDI API changes to NVIDIAInfo v1.1.0 now, so in addition to performing those steps I highlighted previous with CCDInfo, I'd like you to also try and use NVIDIAInfo v1.1.0 to swap between surround and non-surround settings. Based on my testing, it seems to apply all the right settings in the right places, but I'd really like to know if it works for you 🤞.

You can get NVIDIAInfo v1.1.0 from https://github.com/terrymacdonald/NVIDIAInfo/releases/tag/v1.1.0

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

OK @whitestar127!

I've been working with @Mobeeuz doing some testing, and thanks to their feedback I've now restructured the NVIDIALibrary to ensure that NVIDIA colour settings are applied appropriately at the right times. The process flow is now like so:

  1. Mosaic changes are made (either on/off)
  2. If the target display has windows colour settings, then the NVIDIA colour settings are removed
  3. Windows display layout changes are made
  4. Windows colour /refresh changes are made
  5. If the target display has NVIDIA colour settings, then the new NVIDIA colour settings are applied

I'm quite hopeful that this will be the one that works properly for you. 🤞

Can you please download NVIDIAInfo v1.1.2 from https://github.com/terrymacdonald/NVIDIAInfo/releases/tag/v1.1.2 and give it a go?

Thanks for all your hard work testing this!

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

@whitestar127 There is an update...please use NVIDIAInfo v1.1.2 instead :)

https://github.com/terrymacdonald/NVIDIAInfo/releases/tag/v1.1.2

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

And, once you've tested the above, @whitestar127, I've got a new test build for DisplayMagician v2.1.0 for you to test for me please!

DisplayMagicianSetup-v2.1.0.7.zip

If this fixes your current issue, then please log that fact here.

If you find another issue not related to this issue, then please log a new issue so that I can troubleshoot it separately. I need to iron out all the bugs so that I can bake a proper release.

Thanks
Terry

from displaymagician.

terrymacdonald avatar terrymacdonald commented on May 29, 2024

Is fixed in DisplayMagician v2.1.0 as tested by others, and releasing publically shortly. Closing this issue.

Please feel free to reopen this issue if you are still experiencing a problem after you've installed DisplayMagician v2.1.0.

from displaymagician.

whitestar127 avatar whitestar127 commented on May 29, 2024

from displaymagician.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.