|
|
|
#1
|
||||
|
||||
|
Quote:
This GUID is variable from system to system. Here there are 6 GUIDs with DedicatedVideoMemory values, one of which is from the ON-BOARD video card. But the GUID bears no resemblance to those of your images. ![]() How to identify the correct GUID to obtain the video value? Would this method work with older operating systems like WindowsXP or Vista, 7, etc? I could make a list and search all GUIDs until I found a value other than 0, but how do I know if it would be the correct GUID? The value in DedicatedVideoMemory is not correct here. It should be 4 GB but it results 4239917056 = 4043.5 MB = 3.94 GB. |
| The Following User Says Thank You to Cesar82 For This Useful Post: | ||
BLACKFIRE69 (30-05-2020) | ||
| Sponsored Links |
|
#2
|
||||
|
||||
|
Quote:
SOFTWARE\Microsoft\DirectX\ - DirectX is a clue so one has to go on msdn which is here https://docs.microsoft.com/en-us/win...i_adapter_desc https://stackoverflow.com/questions/...r-amd/56599035 Also found this Visual Basic code so I translated it to pascal so here Code:
uses
Winapi.Windows, Winapi.DXGI;
type
TGPUInfo = record
FName: String;
FSize: Integer;
end;
TGPUs = array of TGPUInfo;
procedure GetGPUs(out V: TGPUs);
function Align(Value, Size: Integer): Integer;
begin
if Value mod Size <> 0 then
Result := Succ(Max(0, Value div Size)) * Size
else
Result := Value;
end;
var
GPUInfo: TGPUInfo;
i: Integer;
riid: TGUID;
hr: HRESULT;
pFactory: IDXGIFactory;
pAdapter: IDXGIAdapter;
dxAdapterDesc: DXGI_ADAPTER_DESC;
begin
riid := StringToGUID('{7b7166ec-21c7-44ae-b21a-c9ae321ae369}');
pFactory := nil;
hr := CreateDXGIFactory(riid, pFactory);
if (hr = S_OK) and Assigned(pFactory) then
begin
pAdapter := nil;
i := 0;
while (pFactory.EnumAdapters(i, pAdapter) = S_OK) do
begin
FillChar(dxAdapterDesc, SizeOf(DXGI_ADAPTER_DESC), 0);
hr := pAdapter.GetDesc(dxAdapterDesc);
if hr = S_OK then
begin
GPUInfo.FName := dxAdapterDesc.Description;
GPUInfo.FSize := IfThen(dxAdapterDesc.DedicatedVideoMemory = 0,
dxAdapterDesc.DedicatedSystemMemory,
dxAdapterDesc.DedicatedVideoMemory) div 1048576;
GPUInfo.FSize := Align(GPUInfo.FSize, IfThen(GPUInfo.FSize < 512,
32, 512));
Insert(GPUInfo, V, Length(V));
end;
inc(i);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
MyGPUs: TGPUs;
begin
GetGPUs(MyGPUs);
for i := Low(MyGPUs) to High(MyGPUs) do
ShowMessage(MyGPUs[i].FName + ' (' + MyGPUs[i].FSize.ToString + ' MB)');
end;
Quote:
Quote:
Last edited by Razor12911; 30-05-2020 at 18:13. |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Nero Plugin to burn mdf/mds images | Kall | CD/DVD Software & Utilities | 6 | 09-11-2007 02:29 |
| REQUEST : SDF plugin and AHX tool | --=FamilyGuy=-- | DC Games | 4 | 20-04-2007 13:13 |
| is there a a gamecube plugin to 3d studio max | gamesmell | GameCube Games | 1 | 12-03-2004 23:54 |
| FlaskMPEG & Panasonic Plugin: Plugin has "Fatal Error" | dan | CD/DVD Software & Utilities | 1 | 15-11-2000 16:23 |