Commit Graph

701 Commits

Author SHA1 Message Date
Terry MacDonald
067f639901 Added DisplayProfile images 2021-08-25 20:45:36 +12:00
Terry MacDonald
f66c841431 Updated csproj file to remove deleted files 2021-08-25 20:27:35 +12:00
Terry MacDonald
be31c3b467 Update csproj file 2021-08-25 20:25:51 +12:00
Terry MacDonald
e2ca69e404 First working new NVIDIA library build!
Amazing! This is the first working version of DisplayMagician using the new NVIDIA and Windows CCD library. It works properly, and now I can start to tidy up some of the additioanl functionality I need to sort out before a release. I also then need to work on the AMD library as well!
2021-08-24 22:46:32 +12:00
Terry MacDonald
b65c1572bd Working spanned screen bitmap drawing
This is the initial version of the spanned screen bitmap drawing. It woks by showing one giant screen, but it currently doesn't insert any information about the individual screens that make up the spanned screen at all. I'm going to add that improvement at a later date, because the main thing is to get the new libraries up and running, and used by people.
2021-08-24 21:49:18 +12:00
Terry MacDonald
90c13c7426 Working profile comparisons 2021-08-24 20:37:32 +12:00
Terry MacDonald
0b864f09ca Working JSON display profile load 2021-08-24 20:19:49 +12:00
Terry MacDonald
5aad5003ac [WIP] First working save and load
Still have an issue where the 'Equals' doesn't detect that there is a different primary screen, so it won't let me save a new profile for the slightly changed display settings.
2021-08-22 21:57:29 +12:00
Terry MacDonald
ddbd6431c5 [WIP] Mostly working NVIDIAProfileItem
NVIDIA Profiles can be created, JSON file saved ok, and the bitmaps and icons are drawn correctly and showin in the Display Profile window. The problem comes when the DisplayProfiles_2.0.json file is loaded. JsonConvert causes an exception trying to populate ProfileBitmap, and I can't figure out why!
2021-08-22 21:45:51 +12:00
Terry MacDonald
508f3751b9 Fixed AMDProfileItem and WindProfileItem
DisplayMagician starts, but displayprofile form doesn't work at all.
2021-08-22 18:58:08 +12:00
Terry MacDonald
998293621e [WIP] Almost ready to test new libs 2021-08-22 16:49:38 +12:00
Terry MacDonald
bd89993770 Removed WindowsDisplayAPI
No longer need WindowsDisplayAPI as I've build a Windows CCD library as part of DisplayMagician itself now.
2021-08-22 15:51:13 +12:00
Terry MacDonald
40b8525dd8 [WIP] Added video card detection
Added ability for ProfileRepository to know what mode it is in when DisplayMagician starts.
2021-08-22 15:42:12 +12:00
Terry MacDonald
01ffda8428 [WIP] Graphic library integration part 1 2021-08-22 12:54:39 +12:00
Terry MacDonald
7753e26917 Commented code tidy up 2021-08-21 22:14:25 +12:00
Terry MacDonald
a4662bed6c Removed prior graphics libraries to enable new lib integration.
Tweaked some easy to fix integration errors.
2021-08-21 22:09:41 +12:00
Terry MacDonald
224b666bba [WIP] Added NVIDIA in using similar structure as AMD
Still a LOT of integration work still left to do, and of course some work to
use the new libraries as part of the getting and setting the config.
2021-08-21 22:01:23 +12:00
Terry MacDonald
4d1f074f42 Initial NVIDIA, AMD and CCD Integration
Putting the current libraries into DisplaayMagician so I can work on the logic.
2021-08-21 21:46:36 +12:00
Terry MacDonald
fd98c2e5ca [WIP] Game Library updates 2021-08-21 21:31:48 +12:00
Terry MacDonald
0449ed7d1e Updated list of game libraries in Game Shortcut form 2021-08-01 23:13:53 +12:00
Terry MacDonald
2278af5bab Merged 2021-07-26 19:45:11 +12:00
Terry MacDonald
5d48a537e2 Remove unneeded NVIDIA check
Removed the NVIDIA check for the DisplayTarget
device path containing 'UID5120' as this isn't supported
by the Quadro cards. Fixes #30.
2021-07-26 19:44:11 +12:00
Terry MacDonald
55caba468c Remove unneeded NVIDIA check
Removed the NVIDIA check for the DisplayTarget
device path containing 'UID5120' as this isn't supported
by the Quadro cards.
2021-07-26 19:43:12 +12:00
Terry MacDonald
a90c555972 Fix steam launch parameter passing
This change fixes Steam launch parameter passing.
There is still work to test and/or limit launch parameter
passing to only those libraries that support it. This will
need a bit of work. Fixes #27.
2021-07-25 22:10:39 +12:00
Terry MacDonald
df2d89bb69 Working Process Priority
Have managed to get process priority working, but
need to do more testing before I'm sure it works in all
scenarios. I don't have enough different game types to
test the various different code paths, so thats going to
be something that my users will unfortunately need to
bug test. Adds feature #29.
2021-07-25 21:29:00 +12:00
Terry MacDonald
deb90f03a9 [WIP] Initial version of game priority code 2021-07-25 17:14:18 +12:00
Terry MacDonald
28ec42b92d [WIP] Working process priority UI
And also saving and loading. Now only implementation
to go.
2021-07-25 16:41:26 +12:00
Terry MacDonald
ea6d6aa4c2 [WIP] further process priority implementation 2021-07-24 22:15:08 +12:00
Terry MacDonald
f740055cd3 [WIP} Partial process priority implementation 2021-07-24 22:11:49 +12:00
Terry MacDonald
764d759e10 Fixed exceprion with no game shortcut
Fixes #25. When you attempted to create a shortcut
that didnt run a game or executable, the program would
save the shortcut, but would crash when trying to show
it in the Shortcut library. This was because the _shortcutBitmap
wsn't being populated when no game or executable was
chosen. This has been fixed now, as it will use the profile bitmap
as the shortcut bitmap in these instances.
2021-07-24 16:26:10 +12:00
Terry MacDonald
0123e061e0 [WIP] initial library integration into DM
Have almost integrated the new CCD, AMD and NVIDIA
libraries into DIsplayMagician. The CCD library is working
fine. The AMD library is partially completed, but is awaiting
some help from AMD, as it appears one of their driver functions
is broken (or at least incorrectly documented). The NVIDIA
library is currently still under development, but I've still copied
it across so that I could work on the additional profile objects
that need to be prepared in order for this to work.

As I am waiting on a response from AMD, the plan is now that
I will swap over to an NVIDIA based video card in my test machines
and I will start work on the NVIDIA library. The NVIDIA library seems
straight forward compared to AMD, so that hopefully won't take too
long to do. Once that library is compete, I'll test it within NVIDIAInfo
application until its working, and then I'll port it back over to
DisplayMagician. That will then let me complete the last bits of the
integration so that I can complete the last of the NVIDIA tests.
Hopefully by the time all this happens I will have heard back from
AMD and I will be able to continue work with that section of code.
2021-07-24 16:05:38 +12:00
Terry MacDonald
c9f2cffe0a [WIP] Saving earlier work
No idea what I did here.
2021-07-24 15:19:24 +12:00
Terry MacDonald
86375b06aa Added initial CCD library code
Added some basic CCD library functionality
to be able to set Windows displays directly
from the code. This will enable future native
HDR support through windows, as well as
allow positioning and screen setup to work
better through here than via the AMD driver.

Will still need to work on AMD Eyefinity support
once this is completed.
2021-06-29 22:15:57 +12:00
Terry MacDonald
600bb39ec6 Added PossibleAddAndRemove function 2021-06-27 20:57:46 +12:00
Terry MacDonald
33bf28149e Added many DisplayConfigMap functions
Added most of the ADL2 DisplayConfigMap
functions to the ADL library in order to test
them out ans see which ones make sense to
use.
2021-06-27 20:46:32 +12:00
Terry MacDonald
c1d22970f6 [WIP] Fixing incorrect profile test
AMD Profile applying task now correctly reports
a true result when the AMDLibrary reports the
profile has been successfully applied.

Now all the scaffolding is complete, and an AMD
profile can be created, saved, loaded from a JSON file
and then an application of that AMD profile can be
tried.

Now comes the difficult part. I need to test out which
bits of the AMD ADL SDK I need to grab/store/load in
order to actually make the screen layouts change. And
then once that works with separate screens, I need to
add code to undertstand and recognise AMD Eyefinity
screen setups, and to make them able to be used.

This is going to take some time :/.
2021-06-27 15:17:07 +12:00
Terry MacDonald
2285da1844 [WIP] Initial apply AMD profile scaffolding
Have now got it so that an AMD DisplayProfile
now results in the profile attempting to be applied.
2021-06-27 15:10:59 +12:00
Terry MacDonald
a715e50fe5 Fixing AMDProfile.IsPossible 2021-06-27 14:44:10 +12:00
Terry MacDonald
04a0b56b59 [WIP] Basic working DisplayProfile writing and reading
Now have the DisplayProfile storing the minimal set of
data that it needs. It also recreates the Screens list (used
for creating profile bitmaps and icons) and recreates the
DisplayProfileBitmaps each time at present. I will add some
logic to deerialise the bitmaps again at a later date once
I've compeleted actually applying the AMD display confs.
2021-06-27 13:53:00 +12:00
Terry MacDonald
240c69fcdb [WIP] Adjusted DisplayView size
Now works with single screens and similar
so that they show correctly on the page without
being hidden by foreground stuff. Still might
make the DisplayView larger if it makes sense.
2021-06-26 22:18:41 +12:00
Terry MacDonald
99d43bc245 [WIP] Initial working AMD displayview
Have managed to get a working displayview
for AMD (not working in spanned mode) and
currently playing with the colours and layout.
Once I have something locked in, I'll troubleshoot
the ProfileDisplay file writing.
2021-06-26 21:54:11 +12:00
Terry MacDonald
6a3068fb32 [WIP] Connecting AMDProfile to screens
Trying to figure out a video card agnostic way
of generating the display icons fo both standard
and spanned displays. Still trying to figure out
exactly which AMD ADL calls I need to make to
get all the information I need. It is NOT very well
documented. It's actually really annoying! AMD
need to do better.
2021-06-25 21:52:02 +12:00
Terry MacDonald
5cb0984637 [WIP] Partial profile image restructure
Trying to make the DisplayView and ProfileIcon
image drawing logic more generic so that it will
work with NVIDIA, AMD , Intel and Windows video
card drivers. Having to reverse engineer the amazing
wok that Soroush did with this stuff. I just know that
I'm going to break this before I fix it, but I really think
this is needed in order for this new video card
separation refactoring to work. This is going to take a
while I feel!
2021-06-24 22:14:39 +12:00
Terry MacDonald
ac5d51bb12 [WIP] Initial ProfileItem split into libraries
This is part of the new strategy to split the
ProfileItems into different derived clases with
one per Video card technology. The purpose is
to allow each video card driver to produce a
slightly different profiledata section which is
customised to the needs of that video card.

This will allieviate the need for us to extend
the Path object to support AMD, as we'll be
doing the differentiation at each ProfileItem.
Time will tell if this is a better strategy or not.

This is all to do with my even longer term
strategy of devloping video card driver library
files inhouse. This strategy was directly created
just so that I can make changes in my own code
if I need to support some additional features
such as HDR support within the profiles. It is very
difficult to do this if I'm using another video card
library. Much more simple to update my own code!
2021-06-22 21:05:24 +12:00
Terry MacDonald
3ec33def99 [WIP] saving a copy for later 2021-06-22 19:44:50 +12:00
Terry MacDonald
d654b80377 [WIP] Part work on new Profile data structs
Moving to a situation where each library has
it's own ProfileData structure which will require
me to break the existing Profile structure.
This will be better once finished, but it could
be a month before I get this rewrite finished :/
2021-06-20 17:13:21 +12:00
Terry MacDonald
7efd4f0349 Update to v2.0.0 and added functions
Decided that the DisplayProfile changes would
have to be breaking changes if I was going to
add HDR support, and be able to handle adding
future video cards from different manufacturers.
This all requires a change to the DisplayProfile
format. So now this is going to use a file called
DisplayProfiles_2.0.json rather than a file called
DisplayProfiles_1.0.json. This is because the
profiles will need to be generated again from
scratch, as they will all be completely different
to the format in DisplayProfiles_1.0.json.
2021-06-20 16:37:00 +12:00
Terry MacDonald
4774b9a995 Change Display Profiles to v2.0
We have to do this as we will be moving
to a new video card library-based way of
getting the Display Profiles information.
This is designed to enable me to add new
video card drivers in the future, such as
Intel, in order to support 'combined'
video screens,
2021-06-20 15:20:43 +12:00
Terry MacDonald
484b6d86b4 Renamed ADLWrapper to AMDLibrary
It better reflects the purpose of the class.
2021-06-20 10:45:45 +12:00
Terry MacDonald
d2c8c67d44 Updating messages within DisplayProfile 2021-06-19 20:49:22 +12:00