ledoge / novideo_srgb

Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles
GNU General Public License v3.0
988 stars 35 forks source link

Hello #17

Closed beefcat666 closed 2 years ago

beefcat666 commented 2 years ago

I wanted to start a dialogue and see if you were interested in what I'm doing with your code. I'll take no offense if you are uninterested in my design changes and would rather keep your code the way it is. I am also open to feedback if you are interested, but want things done a little differently.

I've upgraded the runtime from .NET Framework 4.8 to .NET 6. This will allow us to leverage newer C# language features, newer design patterns, and potentially add support for Linux. If you are using an older version of Visual Studio, it might require you to upgrade. If you use Rider, the solution should load and build just like it did before. For VS Code, you might want to install .NET Core related extensions. Client support should still extend all the way back to Windows 7.

I've moved most of the core app logic to a new assembly. This will make it easier to implement some requested features like a CLI as separate assemblies, as well as experiment with different UI frameworks (like MAUI or WinUI 3), which could make implementing some requested features easier.

See my readme for a list of features I'm looking to implement going forward.

ledoge commented 2 years ago

Nice that you're planning on working on those new features that I don't really have the time/motivation for right now.

I'd rather not merge your changes though, because:

  1. Correct me if I'm wrong, but I think using .NET Framework 4.8 makes for a better user experience, as the releases are only a few small files and just work™ on a fresh Windows 10 install. And AFAIK using a newer version would require releases to either include the entire runtime or for users to install it, and I'd want to avoid both of those.
  2. I'm really not familiar with how to write "modern" .NET code, so while I'm sure your proposed refactoring would make things more organized, it would make it significantly harder for me to work on it.

Also, regarding Linux support: AFAIK there is no way to set a color space conversion matrix on Intel iGPUs, and on NVIDIA you can set that matrix but nothing else. On the newest AMD cards you actually have full control over degamma, the matrix and regamma (degamma is fixed to sRGB on older GPUs), so the same as NVIDIA provides on Windows via the API that novideo_srgb uses. So while it would be significantly less capable than the Windows version for most users, I think a Linux version would still be nice to have.

beefcat666 commented 2 years ago

No worries. I've added a few of the features already. If you're interested, I could port them over to your .NET 4.8 codebase and submit a new PR that just includes them and none of my other nonsense.

About .NET 6, I will point out a few things:

The .NET 6 specific stuff I have actually written so far is incomplete and immaterial to the enhancements I've made though, so it's not that important.