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.
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.
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.
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,
Have now go the required data, but for some
reason AMD is returning two valid adapters
when there is actually just one in the system!
Could be a problem with the device installation,
but I will need figuring out how to either remove
duplicates, or figure out the information to use as
a filter for ignoring one of the adapters.
We now have enough data for me to identify
all the connected display devices, and to
generate a display identifier which will work
no matter if AMD Eyefinity is enabled or not!
This should allow me to generate an display
identifier that will work like the NVIDIA ones.
Trying different ways to get a list of all the connnected
displays via the AMD ADL library. It seems pretty
onerous at the moment, and seems like there is still a
lot of work to go :/. AGS may have been the better
way to go, but ADL at least had a C# example for me
to start with!
Need to add Display Device info extraction.
Have created consts for the connector types
in c#, but now need to add the logic to decode
the ADLDeviceConfig returned value!
This is a lot of learning about Pinvoke
and the way to marshal c structures
into c# managed structures when passed
as out.
This is all a lot more indepth than I was
hoping it was going to be!
ADL2_Display_SLSMapConfig_SetState
ADL2_Display_SLSGrid_Caps
ADL2_Display_SLSMapIndexList_Get
ADL2_Display_SLSMapIndex_Get
Have to try and sort out the delegates and
the other bits to match the rest of the
AMD provided library entries.
Tried to add the first SLS map config get function into
the ADL.cs file, as well as all the supporting data
structures. Time will tell whether this will work or not!