From f43ef85342e91b5fbb8367a174bafbb4a1cddcc5 Mon Sep 17 00:00:00 2001 From: NaliLord Date: Fri, 10 Jun 2022 01:54:35 +0200 Subject: [PATCH] Added Support for the OD7(N) API Drivers/Cards. --- Common/adl.pas | 101 +++- Common/adl_sdk.pas | 13 +- Common/adl_structures.pas | 26 +- Common/d3dkmt.pas | 2 +- Common/d3dkmthk.pas | 111 ++++- Plugin/AMDPlugin.dpr | 62 ++- Plugin/AMDPlugin.dproj | 177 +++++-- Plugin/AMDPlugin.res | Bin 900 -> 900 bytes Testing/Main.dfm | 4 - Testing/Main.pas | 2 +- Testing/TestApp.dpr | 20 - Testing/TestApp.dproj | 952 -------------------------------------- 12 files changed, 384 insertions(+), 1086 deletions(-) delete mode 100644 Testing/TestApp.dpr delete mode 100644 Testing/TestApp.dproj diff --git a/Common/adl.pas b/Common/adl.pas index 2d36ee9..37a4bb6 100644 --- a/Common/adl.pas +++ b/Common/adl.pas @@ -2,14 +2,17 @@ { } { TADL Class for the AMD Display Library } { } -{ Version 0.2 } +{ Version 0.3 } { } +{ 2022-10-05 - 0.3 } +{ Added APIVersion to TADLAdapter } +{ Added support for OD7(N) Drivers/Cards } { 2020-10-05 - 0.2 } { Added PNP String to TADLAdapter } { 2020-10-03 - 0.1 } { Initial Release } { } -{ (c) 2020 by NaliLord } +{ (c) 2022 by NaliLord } { } {*******************************************************} @@ -37,7 +40,7 @@ TADLAdapter = class FBusNumber: Integer; FDeviceNumber: Integer; FFunctionNumber: Integer; - FTemp: Byte; + FTemp: Integer; FFan: Byte; FFanRPM: Integer; FFanMaxRPM: Integer; @@ -54,8 +57,10 @@ TADLAdapter = class FBusLanesMax: Integer; FDriverDate: String; FDriverVersion: String; + FAPIVersion: Integer; public function IsLocation(ABusNumber, ADeviceNumber, AFunctionNumber: Integer): Boolean; + property APIVersion: Integer read FAPIVersion; property PNP: String read FPNP; property BiosPartNumber: String read FBiosPartNumber; property BiosVersion: String read FBiosVersion; @@ -68,7 +73,7 @@ TADLAdapter = class property BusNumber: Integer read FBusNumber; property DeviceNumber: Integer read FDeviceNumber; property FunctionNumber: Integer read FFunctionNumber; - property Temp: Byte read FTemp; + property Temp: Integer read FTemp; property Fan: Byte read FFan; property FanRPM: Integer read FFanRPM; property FanMaxRPM: Integer read FFanMaxRPM; @@ -91,7 +96,10 @@ TADL = class private FInitialized: Boolean; FDLLHandle: NativeUInt; + FNumberAdapters: Integer; FAdapters: TObjectList; + // -- ADL -- + FAdapterInfo: PAdapterInfo; FMain_Control_Create: ADL_MAIN_CONTROL_CREATE; FMain_Control_Destroy: ADL_MAIN_CONTROL_DESTROY; FAdapter_NumberOfAdapters: ADL_ADAPTER_NUMBEROFADAPTERS_GET; @@ -100,21 +108,29 @@ TADL = class FAdapter_MemoryInfo: ADL_ADAPTER_MEMORYINFO_GET; FAdapter_Active: ADL_ADAPTER_ACTIVE_GET; FOverdrive_Caps: ADL_OVERDRIVE_CAPS; + // -- ADL2 -- + FADL2Context: Pointer; + FMain_Control_Create2: ADL2_MAIN_CONTROL_CREATE; + FMain_Control_Destroy2: ADL2_MAIN_CONTROL_DESTROY; + FNew_QueryPMLogData: ADL2_NEW_QUERYPMLOGDATA_GET; + // -- OD5 -- FOverdrive5_ThermalDevices: ADL_OVERDRIVE5_THERMALDEVICES_ENUM; FOverdrive5_Temperature: ADL_OVERDRIVE5_TEMPERATURE_GET; FOverdrive5_FanSpeed: ADL_OVERDRIVE5_FANSPEED_GET; FOverdrive5_FanSpeedInfo: ADL_OVERDRIVE5_FANSPEEDINFO_GET; FOverdrive5_CurrentActivity: ADL_OVERDRIVE5_CURRENTACTIVITY_GET; FOverdrive5_ODParameters: ADL_OVERDRIVE5_ODPARAMETERS_GET; - FMain_Control_Create2: ADL2_MAIN_CONTROL_CREATE; - FMain_Control_Destroy2: ADL2_MAIN_CONTROL_DESTROY; - FOverdriveN_Temperature: ADL2_OVERDRIVEN_TEMPERATURE_GET; + // -- OD6 -- + FOverdrive6_Temperature: ADL_OVERDRIVE6_TEMPERATURE_GET; + // -- OD8 -- FOverdrive8_Init_Setting: ADL2_OVERDRIVE8_INIT_SETTINGX2_GET; FOverdrive8_Current_Setting: ADL2_OVERDRIVE8_CURRENT_SETTINGX2_GET; - FNew_QueryPMLogData: ADL2_NEW_QUERYPMLOGDATA_GET; - FAdapterInfo: PAdapterInfo; - FNumberAdapters: Integer; - FADL2Context: Pointer; + // -- ODN -- + FOverdriveN_Capabilities: ADL2_OVERDRIVEN_CAPABILITIES_GET; + FOverdriveN_Temperature: ADL2_OVERDRIVEN_TEMPERATURE_GET; + FOverdriveN_FanControlGet: ADL2_OVERDRIVEN_FANCONTROL_GET; + FOverdriveN_PerformanceStatus :ADL2_OVERDRIVEN_PERFORMANCESTATUS_GET; + // -- <<< function GetAdapterCount: Integer; function GetAdapters(Index: Integer): TADLAdapter; protected @@ -200,9 +216,17 @@ procedure TADL.Initialize; FOverdrive5_CurrentActivity:=GetProcAddress(FDLLHandle, 'ADL_Overdrive5_CurrentActivity_Get'); FOverdrive5_ODParameters:=GetProcAddress(FDLLHandle, 'ADL_Overdrive5_ODParameters_Get'); + FOverdrive6_Temperature:=GetProcAddress(FDLLHandle, 'ADL_Overdrive6_Temperature_Get'); + FMain_Control_Create2:=GetProcAddress(FDLLHandle, 'ADL2_Main_Control_Create'); FMain_Control_Destroy2:=GetProcAddress(FDLLHandle, 'ADL2_Main_Control_Destroy'); + + FOverdriveN_Capabilities:=GetProcAddress(FDLLHandle, 'ADL2_OverdriveN_Capabilities_Get'); FOverdriveN_Temperature:=GetProcAddress(FDLLHandle, 'ADL2_OverdriveN_Temperature_Get'); + FOverdriveN_FanControlGet:=GetProcAddress(FDLLHandle, 'ADL2_OverdriveN_FanControl_Get'); + FOverdriveN_PerformanceStatus:=GetProcAddress(FDLLHandle, 'ADL2_OverdriveN_PerformanceStatus_Get'); + + FOverdrive8_Init_Setting:=GetProcAddress(FDLLHandle, 'ADL2_Overdrive8_Init_SettingX2_Get'); FOverdrive8_Current_Setting:=GetProcAddress(FDLLHandle, 'ADL2_Overdrive8_Current_SettingX2_Get'); FNew_QueryPMLogData:=GetProcAddress(FDLLHandle, 'ADL2_New_QueryPMLogData_Get'); @@ -221,9 +245,13 @@ procedure TADL.Initialize; (@FOverdrive5_FanSpeedInfo <> nil) AND (@FOverdrive5_CurrentActivity <> nil) AND (@FOverdrive5_ODParameters <> nil) AND + (@FOverdrive6_Temperature <> nil) AND (@FMain_Control_Create2 <> nil) AND (@FMain_Control_Destroy2 <> nil) AND + (@FOverdriveN_Capabilities <> nil) AND (@FOverdriveN_Temperature <> nil) AND + (@FOverdriveN_FanControlGet <> nil) AND + (@FOverdriveN_PerformanceStatus <> nil) AND (@FOverdrive8_Init_Setting <> nil) AND (@FOverdrive8_Current_Setting <> nil) AND (@FNew_QueryPMLogData <> nil) then @@ -258,8 +286,7 @@ procedure TADL.Update; Registry: TRegistry; Adapter: TADLAdapter; S: ADLSensorType; - D: ADLOD8SettingId; - I, J, AdapterActive, IsSupported, IsEnabled, Version, Capabilities, FeatureCount: Integer; + I, AdapterActive, IsSupported, IsEnabled, Version, Caps, FeatureCount: Integer; BiosInfo: TADLBiosInfo; MemoryInfo: TADLMemoryInfo; AdapterInfo: TAdapterInfo; @@ -268,11 +295,12 @@ procedure TADL.Update; AdapterFanSpeedInfo: TADLFanSpeedInfo; AdapterActivity: TADLPMActivity; ODParameters: TADLODParameters; - ThermalControllerInfo: TADLThermalControllerInfo; LogData: TADLPMLogDataOutput; SettingsInit: TADLOD8InitSetting; - SettingsCurr: TADLOD8CurrentSetting; SettingList: PADLOD8SingleInitSetting; + FanControl: TADLODNFanControl; + PerformanceStats: TADLODNPerformanceStatus; + Capabilities: TADLODNCapabilities; begin if FInitialized then begin @@ -318,10 +346,10 @@ procedure TADL.Update; begin SettingList:=nil; FeatureCount:=Integer(ADLOD8SettingId.OD8_COUNT); - if FOverdrive8_Init_Setting(FADL2Context, AdapterInfo.iAdapterIndex, Capabilities, FeatureCount, SettingList) = ADL_OK then + if FOverdrive8_Init_Setting(FADL2Context, AdapterInfo.iAdapterIndex, Caps, FeatureCount, SettingList) = ADL_OK then begin SettingsInit.count:=IfThen(FeatureCount > Integer(ADLOD8SettingId.OD8_COUNT), Integer(ADLOD8SettingId.OD8_COUNT), FeatureCount); - SettingsInit.overdrive8Capabilities:=Capabilities; + SettingsInit.overdrive8Capabilities:=Caps; CopyMemory(@SettingsInit.od8SettingTable[OD8_GFXCLK_FMAX], SettingList, Min(FeatureCount * SizeOf(TADLOD8SingleInitSetting), SizeOf(SettingsInit.od8SettingTable))); @@ -329,6 +357,16 @@ procedure TADL.Update; Adapter.FMemoryMax:=SettingsInit.od8SettingTable[OD8_UCLK_FMAX].maxValue; Adapter.FFanMaxRPM:=SettingsInit.od8SettingTable[OD8_FAN_MIN_SPEED].maxValue; end; + end else + if Version = 7 then + begin + if FOverdriveN_Capabilities(FADL2Context, AdapterInfo.iAdapterIndex, Capabilities) = ADL_OK then + begin + Adapter.FClockMax:=Capabilities.sEngineClockRange.iMax; + Adapter.FMemoryMax:=Capabilities.sMemoryClockRange.iMax; + Adapter.FVddcMax:=Capabilities.svddcRange.iMax; + Adapter.FFanMaxRPM:=Capabilities.fanSpeed.iMax; + end; end; Registry:=TRegistry.Create(KEY_READ); @@ -352,6 +390,8 @@ procedure TADL.Update; if Assigned(Adapter) AND Adapter.FUpdate then begin + Adapter.FAPIVersion:=Version; + if Version >= 8 then begin ZeroMemory(@LogData, SizeOf(LogData)); @@ -411,13 +451,32 @@ procedure TADL.Update; end; end; end else + if Version = 7 then begin - ThermalControllerInfo.iSize:=SizeOf(ThermalControllerInfo); - if FOverdrive5_ThermalDevices(AdapterInfo.iAdapterIndex, 0, ThermalControllerInfo) = ADL_OK then + if FOverdriveN_Temperature(FADL2Context, AdapterInfo.iAdapterIndex, Integer(CORE), Adapter.FTemp) = ADL_OK then begin + Adapter.FTemp:=Adapter.FTemp div 1000; + end; + if FOverdriveN_FanControlGet(FADL2Context, AdapterInfo.iAdapterIndex, FanControl) = ADL_OK then + begin + Adapter.FFanRPM:=FanControl.iCurrentFanSpeed; + Adapter.FFan:=Round(100 / Adapter.FFanMaxRPM * Adapter.FFanRPM); end; + if FOverdriveN_PerformanceStatus(FADL2Context, AdapterInfo.iAdapterIndex, PerformanceStats) = ADL_OK then + begin + Adapter.FActivity:=PerformanceStats.iGPUActivityPercent; + Adapter.FVddc:=PerformanceStats.iVddc / 1000; + Adapter.FClock:=PerformanceStats.iCoreClock div 100; + Adapter.FMemory:=PerformanceStats.iMemoryClock div 100; + Adapter.FPerformanceLevel:=PerformanceStats.iCurrentCorePerformanceLevel; + Adapter.FBusSpeed:=PerformanceStats.iCurrentBusSpeed div 1000; + Adapter.FBusLanes:=PerformanceStats.iCurrentBusLanes; + Adapter.FBusLanesMax:=PerformanceStats.iMaximumBusLanes; + end; + end else + begin AdapterTemp.iSize:=SizeOf(AdapterTemp); if FOverdrive5_Temperature(AdapterInfo.iAdapterIndex, 0, AdapterTemp) = ADL_OK then begin @@ -506,9 +565,13 @@ procedure TADL.Finalize; @FOverdrive5_FanSpeedInfo:=nil; @FOverdrive5_CurrentActivity:=nil; @FOverdrive5_ODParameters:=nil; + @FOverdrive6_Temperature:=nil; @FMain_Control_Create2:=nil; @FMain_Control_Destroy2:=nil; + @FOverdriveN_Capabilities:=nil; @FOverdriveN_Temperature:=nil; + @FOverdriveN_FanControlGet:=nil; + @FOverdriveN_PerformanceStatus:=nil; @FOverdrive8_Init_Setting:=nil; @FOverdrive8_Current_Setting:=nil; @FNew_QueryPMLogData:=nil; diff --git a/Common/adl_sdk.pas b/Common/adl_sdk.pas index 0741ce1..c9bb818 100644 --- a/Common/adl_sdk.pas +++ b/Common/adl_sdk.pas @@ -3,7 +3,7 @@ interface uses - adl_structures; + adl_structures, adl_defines; /// /// Copyright (c) 2008 - 2013 Advanced Micro Devices, Inc. @@ -70,12 +70,13 @@ interface ADL2_ADAPTER_ACTIVE_GET = function(hContext: Pointer; iNum: Integer; var iActive: Integer): Integer; stdcall; ADL2_OVERDRIVE_CAPS = function(hContext: Pointer; iAdapterIndex: Integer; var iSupported: Integer; var iEnabled: Integer; var iVersion: Integer): Integer; stdcall; + ADL2_OVERDRIVEN_CAPABILITIES_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpCapabilities: TADLODNCapabilities): Integer; stdcall; ADL2_OVERDRIVEN_CAPABILITIESX2_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpCapabilities: TADLODNCapabilitiesX2): Integer; stdcall; - ADL2_OVERDRIVEN_PERFORMANCESTATUS_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpStatus: ADLODNPerformanceStatus): Integer; stdcall; - ADL2_OVERDRIVEN_FANCONTROL_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpControl: ADLODNFanControl): Integer; stdcall; - ADL2_OVERDRIVEN_FANCONTROL_SET = function(hContext: Pointer; iAdapterIndex: Integer; var lpControl: ADLODNFanControl): Integer; stdcall; - ADL2_OVERDRIVEN_POWERLIMIT_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLimit: ADLODNPowerLimitSetting): Integer; stdcall; - ADL2_OVERDRIVEN_POWERLIMIT_SET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLimit: ADLODNPowerLimitSetting): Integer; stdcall; + ADL2_OVERDRIVEN_PERFORMANCESTATUS_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpStatus: TADLODNPerformanceStatus): Integer; stdcall; + ADL2_OVERDRIVEN_FANCONTROL_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpControl: TADLODNFanControl): Integer; stdcall; + ADL2_OVERDRIVEN_FANCONTROL_SET = function(hContext: Pointer; iAdapterIndex: Integer; var lpControl: TADLODNFanControl): Integer; stdcall; + ADL2_OVERDRIVEN_POWERLIMIT_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLimit: TADLODNPowerLimitSetting): Integer; stdcall; + ADL2_OVERDRIVEN_POWERLIMIT_SET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLimit: TADLODNPowerLimitSetting): Integer; stdcall; ADL2_OVERDRIVEN_TEMPERATURE_GET = function(hContext: Pointer; iAdapterIndex: Integer; iTemperatureType: Integer; var lpTemperature: Integer): Integer; stdcall; ADL2_OVERDRIVEN_SYSTEMCLOCKSX2_GET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLevels: TADLODNPerformanceLevelsX2): Integer; stdcall; ADL2_OVERDRIVEN_SYSTEMCLOCKSX2_SET = function(hContext: Pointer; iAdapterIndex: Integer; var lpLevels: TADLODNPerformanceLevelsX2): Integer; stdcall; diff --git a/Common/adl_structures.pas b/Common/adl_structures.pas index 59917bb..084dbde 100644 --- a/Common/adl_structures.pas +++ b/Common/adl_structures.pas @@ -2655,7 +2655,7 @@ ADLODNParameterRange = record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// type - _ADLODNCapabilities = record + TADLODNCapabilities = record /// Number of levels which describe the minimum to maximum clock ranges. /// The 1st level indicates the minimum clocks, and the 2nd level /// indicates the maximum clocks. @@ -2685,6 +2685,7 @@ _ADLODNCapabilities = record /// clocks cannot be set outside this range. minimumPerformanceClock: ADLODNParameterRange; end; + PADLODNCapabilities = ^TADLODNCapabilities; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N capabilities @@ -2693,7 +2694,7 @@ _ADLODNCapabilities = record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// type - _ADLODNCapabilitiesX2 = record + TADLODNCapabilitiesX2 = record /// Number of levels which describe the minimum to maximum clock ranges. /// The 1st level indicates the minimum clocks, and the 2nd level /// indicates the maximum clocks. @@ -2730,7 +2731,7 @@ _ADLODNCapabilitiesX2 = record /// Contains the hard limits of the Auto Systemclock autoSystemClock: ADLODNParameterRange; end; - TADLODNCapabilitiesX2 = _ADLODNCapabilitiesX2; + PADLODNCapabilitiesX2 = ^TADLODNCapabilitiesX2; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive level. @@ -2848,7 +2849,7 @@ ADLOD8SingleInitSetting = record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// type - ADLODNFanControl = record + TADLODNFanControl = record iMode: integer; iFanControlMode: integer; iCurrentFanSpeedMode: integer; @@ -2858,7 +2859,7 @@ ADLODNFanControl = record iMinPerformanceClock: integer; iMinFanLimit: integer; end; - PADLODNFanControl = ^ADLODNFanControl; + PADLODNFanControl = ^TADLODNFanControl; ///////////////////////////////////////////////////////////////////////////////////////////// ///\brief Structure containing information about Overdrive N power limit. @@ -2868,14 +2869,14 @@ ADLODNFanControl = record /// \nosubgrouping //////////////////////////////////////////////////////////////////////////////////////////// type - ADLODNPowerLimitSetting = record + TADLODNPowerLimitSetting = record iMode: integer; iTDPLimit: integer; iMaxOperatingTemperature: integer; end; type - ADLODNPerformanceStatus = record + TADLODNPerformanceStatus = record iCoreClock: integer; iMemoryClock: integer; iDCEFClock: integer; @@ -2991,6 +2992,17 @@ ADLPMLogDataOutput = record PADLPMLogDataOutput = ADLPMLogDataOutput; TADLPMLogDataOutput = ADLPMLogDataOutput; +type + TADLODNTemperatureType = ( + CORE = 1, + MEMORY = 2, + VRM_CORE = 3, + VRM_MEMORY = 4, + LIQUID = 5, + PLX = 6, + HOTSPOT = 7 + ); + implementation end. diff --git a/Common/d3dkmt.pas b/Common/d3dkmt.pas index 1cb5ad6..527ec4e 100644 --- a/Common/d3dkmt.pas +++ b/Common/d3dkmt.pas @@ -122,7 +122,7 @@ procedure TD3DKMTStatistics.Update; var I: Integer; QueryStats: D3DKMT_QUERYSTATISTICS; - CommitLimit, BytesCommitted: UInt64; + BytesCommitted: UInt64; begin FMemoryUsage:=0; FSharedUsage:=0; diff --git a/Common/d3dkmthk.pas b/Common/d3dkmthk.pas index 3dbfe81..9d93219 100644 --- a/Common/d3dkmthk.pas +++ b/Common/d3dkmthk.pas @@ -35,15 +35,95 @@ interface D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX = 5; type - D3DKMT_QUERYSTATISTICS_TYPE = (D3DKMT_QUERYSTATISTICS_ADAPTER = 0, D3DKMT_QUERYSTATISTICS_PROCESS = 1, D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER = 2, - D3DKMT_QUERYSTATISTICS_SEGMENT = 3, D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT = 4, D3DKMT_QUERYSTATISTICS_NODE = 5, D3DKMT_QUERYSTATISTICS_PROCESS_NODE = 6, - D3DKMT_QUERYSTATISTICS_VIDPNSOURCE = 7, D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE = 8); - - KMTQUERYADAPTERINFOTYPE = (KMTQAITYPE_UMDRIVERPRIVATE = 0, KMTQAITYPE_UMDRIVERNAME = 1, KMTQAITYPE_UMOPENGLINFO = 2, KMTQAITYPE_GETSEGMENTSIZE = 3, - KMTQAITYPE_ADAPTERGUID = 4, KMTQAITYPE_FLIPQUEUEINFO = 5, KMTQAITYPE_ADAPTERADDRESS = 6, KMTQAITYPE_SETWORKINGSETINFO = 7, - KMTQAITYPE_ADAPTERREGISTRYINFO = 8, KMTQAITYPE_CURRENTDISPLAYMODE = 9, KMTQAITYPE_MODELIST = 10, KMTQAITYPE_CHECKDRIVERUPDATESTATUS = 11, - KMTQAITYPE_VIRTUALADDRESSINFO = 12, KMTQAITYPE_DRIVERVERSION = 13, KMTQAITYPE_ADAPTERTYPE = 15, KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT = 16, - KMTQAITYPE_WDDM_1_2_CAPS = 17, KMTQAITYPE_UMD_DRIVER_VERSION = 18, KMTQAITYPE_DIRECTFLIP_SUPPORT = 19); + D3DKMT_QUERYSTATISTICS_TYPE = ( + D3DKMT_QUERYSTATISTICS_ADAPTER = 0, + D3DKMT_QUERYSTATISTICS_PROCESS = 1, + D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER = 2, + D3DKMT_QUERYSTATISTICS_SEGMENT = 3, + D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT = 4, + D3DKMT_QUERYSTATISTICS_NODE = 5, + D3DKMT_QUERYSTATISTICS_PROCESS_NODE = 6, + D3DKMT_QUERYSTATISTICS_VIDPNSOURCE = 7, + D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE = 8, + D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP = 9, + D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER = 10 + ); + + KMTQUERYADAPTERINFOTYPE = ( + KMTQAITYPE_UMDRIVERPRIVATE = 0, + KMTQAITYPE_UMDRIVERNAME = 1, // D3DKMT_UMDFILENAMEINFO + KMTQAITYPE_UMOPENGLINFO = 2, // D3DKMT_OPENGLINFO + KMTQAITYPE_GETSEGMENTSIZE = 3, // D3DKMT_SEGMENTSIZEINFO + KMTQAITYPE_ADAPTERGUID = 4, // GUID + KMTQAITYPE_FLIPQUEUEINFO = 5, // D3DKMT_FLIPQUEUEINFO + KMTQAITYPE_ADAPTERADDRESS = 6, // D3DKMT_ADAPTERADDRESS + KMTQAITYPE_SETWORKINGSETINFO = 7, // D3DKMT_WORKINGSETINFO + KMTQAITYPE_ADAPTERREGISTRYINFO = 8, // D3DKMT_ADAPTERREGISTRYINFO + KMTQAITYPE_CURRENTDISPLAYMODE = 9, // D3DKMT_CURRENTDISPLAYMODE + KMTQAITYPE_MODELIST = 10, // D3DKMT_DISPLAYMODE[] // 10 + KMTQAITYPE_CHECKDRIVERUPDATESTATUS = 11, + KMTQAITYPE_VIRTUALADDRESSINFO = 12, // D3DKMT_VIRTUALADDRESSINFO + KMTQAITYPE_DRIVERVERSION = 13, // D3DKMT_DRIVERVERSION + KMTQAITYPE_UNKNOWN = 14, + KMTQAITYPE_ADAPTERTYPE = 15, // D3DKMT_ADAPTERTYPE // since WIN8 + KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT = 16, // D3DKMT_OUTPUTDUPLCONTEXTSCOUNT + KMTQAITYPE_WDDM_1_2_CAPS = 17, // D3DKMT_WDDM_1_2_CAPS + KMTQAITYPE_UMD_DRIVER_VERSION = 18, // D3DKMT_UMD_DRIVER_VERSION + KMTQAITYPE_DIRECTFLIP_SUPPORT = 19, // D3DKMT_DIRECTFLIP_SUPPORT + KMTQAITYPE_MULTIPLANEOVERLAY_SUPPORT = 20, // D3DKMT_MULTIPLANEOVERLAY_SUPPORT // since WDDM1_3 // 20 + KMTQAITYPE_DLIST_DRIVER_NAME = 21, // D3DKMT_DLIST_DRIVER_NAME + KMTQAITYPE_WDDM_1_3_CAPS = 22, // D3DKMT_WDDM_1_3_CAPS + KMTQAITYPE_MULTIPLANEOVERLAY_HUD_SUPPORT = 23, // D3DKMT_MULTIPLANEOVERLAY_HUD_SUPPORT + KMTQAITYPE_WDDM_2_0_CAPS = 24, // D3DKMT_WDDM_2_0_CAPS // since WDDM2_0 + KMTQAITYPE_NODEMETADATA = 25, // D3DKMT_NODEMETADATA + KMTQAITYPE_CPDRIVERNAME = 26, // D3DKMT_CPDRIVERNAME + KMTQAITYPE_XBOX = 27, // D3DKMT_XBOX + KMTQAITYPE_INDEPENDENTFLIP_SUPPORT = 28, // D3DKMT_INDEPENDENTFLIP_SUPPORT + KMTQAITYPE_MIRACASTCOMPANIONDRIVERNAME = 29, // D3DKMT_MIRACASTCOMPANIONDRIVERNAME + KMTQAITYPE_PHYSICALADAPTERCOUNT = 30, // D3DKMT_PHYSICAL_ADAPTER_COUNT // 30 + KMTQAITYPE_PHYSICALADAPTERDEVICEIDS = 31, // D3DKMT_QUERY_DEVICE_IDS + KMTQAITYPE_DRIVERCAPS_EXT = 32, // D3DKMT_DRIVERCAPS_EXT + KMTQAITYPE_QUERY_MIRACAST_DRIVER_TYPE = 33, // D3DKMT_QUERY_MIRACAST_DRIVER_TYPE + KMTQAITYPE_QUERY_GPUMMU_CAPS = 34, // D3DKMT_QUERY_GPUMMU_CAPS + KMTQAITYPE_QUERY_MULTIPLANEOVERLAY_DECODE_SUPPORT = 35, // D3DKMT_MULTIPLANEOVERLAY_DECODE_SUPPORT + KMTQAITYPE_QUERY_HW_PROTECTION_TEARDOWN_COUNT = 36, // UINT32 + KMTQAITYPE_QUERY_ISBADDRIVERFORHWPROTECTIONDISABLED = 37, // D3DKMT_ISBADDRIVERFORHWPROTECTIONDISABLED + KMTQAITYPE_MULTIPLANEOVERLAY_SECONDARY_SUPPORT = 38, // D3DKMT_MULTIPLANEOVERLAY_SECONDARY_SUPPORT + KMTQAITYPE_INDEPENDENTFLIP_SECONDARY_SUPPORT = 39, // D3DKMT_INDEPENDENTFLIP_SECONDARY_SUPPORT + KMTQAITYPE_PANELFITTER_SUPPORT = 40, // D3DKMT_PANELFITTER_SUPPORT // since WDDM2_1 // 40 + KMTQAITYPE_PHYSICALADAPTERPNPKEY = 41, // D3DKMT_QUERY_PHYSICAL_ADAPTER_PNP_KEY // since WDDM2_2 + KMTQAITYPE_GETSEGMENTGROUPSIZE = 42, // D3DKMT_SEGMENTGROUPSIZEINFO + KMTQAITYPE_MPO3DDI_SUPPORT = 43, // D3DKMT_MPO3DDI_SUPPORT + KMTQAITYPE_HWDRM_SUPPORT = 44, // D3DKMT_HWDRM_SUPPORT + KMTQAITYPE_MPOKERNELCAPS_SUPPORT = 45, // D3DKMT_MPOKERNELCAPS_SUPPORT + KMTQAITYPE_MULTIPLANEOVERLAY_STRETCH_SUPPORT = 46, // D3DKMT_MULTIPLANEOVERLAY_STRETCH_SUPPORT + KMTQAITYPE_GET_DEVICE_VIDPN_OWNERSHIP_INFO = 47, // D3DKMT_GET_DEVICE_VIDPN_OWNERSHIP_INFO + KMTQAITYPE_QUERYREGISTRY = 48, // D3DDDI_QUERYREGISTRY_INFO // since WDDM2_4 + KMTQAITYPE_KMD_DRIVER_VERSION = 49, // D3DKMT_KMD_DRIVER_VERSION + KMTQAITYPE_BLOCKLIST_KERNEL = 50, // D3DKMT_BLOCKLIST_INFO // 50 + KMTQAITYPE_BLOCKLIST_RUNTIME = 51, // D3DKMT_BLOCKLIST_INFO + KMTQAITYPE_ADAPTERGUID_RENDER = 52, // GUID + KMTQAITYPE_ADAPTERADDRESS_RENDER = 53, // D3DKMT_ADAPTERADDRESS + KMTQAITYPE_ADAPTERREGISTRYINFO_RENDER = 54, // D3DKMT_ADAPTERREGISTRYINFO + KMTQAITYPE_CHECKDRIVERUPDATESTATUS_RENDER = 55, + KMTQAITYPE_DRIVERVERSION_RENDER = 56, // D3DKMT_DRIVERVERSION + KMTQAITYPE_ADAPTERTYPE_RENDER = 57, // D3DKMT_ADAPTERTYPE + KMTQAITYPE_WDDM_1_2_CAPS_RENDER = 58, // D3DKMT_WDDM_1_2_CAPS + KMTQAITYPE_WDDM_1_3_CAPS_RENDER = 59, // D3DKMT_WDDM_1_3_CAPS + KMTQAITYPE_QUERY_ADAPTER_UNIQUE_GUID = 60, // D3DKMT_QUERY_ADAPTER_UNIQUE_GUID // 60 + KMTQAITYPE_NODEPERFDATA = 61, // D3DKMT_NODE_PERFDATA + KMTQAITYPE_ADAPTERPERFDATA = 62, // D3DKMT_ADAPTER_PERFDATA + KMTQAITYPE_ADAPTERPERFDATA_CAPS = 63, // D3DKMT_ADAPTER_PERFDATACAPS + KMTQUITYPE_GPUVERSION = 64, // D3DKMT_GPUVERSION + KMTQAITYPE_DRIVER_DESCRIPTION = 65, // D3DKMT_DRIVER_DESCRIPTION // since WDDM2_6 + KMTQAITYPE_DRIVER_DESCRIPTION_RENDER = 66, // D3DKMT_DRIVER_DESCRIPTION + KMTQAITYPE_SCANOUT_CAPS = 67, // D3DKMT_QUERY_SCANOUT_CAPS + KMTQAITYPE_DISPLAY_UMDRIVERNAME = 68, + KMTQAITYPE_PARAVIRTUALIZATION_RENDER = 69, + KMTQAITYPE_SERVICENAME = 70, // 70 + KMTQAITYPE_WDDM_2_7_CAPS = 71, // D3DKMT_WDDM_2_7_CAPS + KMTQAITYPE_TRACKEDWORKLOAD_SUPPORT = 72 + ); type D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER = record @@ -390,6 +470,19 @@ D3DKMT_SEGMENTSIZEINFO = record SharedSystemMemorySize: ULONGLONG; // The size, in bytes, of memory from system memory that can be shared by many users. end; + D3DKMT_ADAPTER_PERFDATA = record + PhysicalAdapterIndex: UInt32; // The physical adapter index in a LDA chain. + MemoryFrequency: ULONGLONG; // Clock frequency of the memory in hertz + MaxMemoryFrequency: ULONGLONG; // Max clock frequency of the memory while not overclocked, represented in hertz. + MaxMemoryFrequencyOC: ULONGLONG; // Clock frequency of the memory while overclocked in hertz. + MemoryBandwidth: ULONGLONG; // Amount of memory transferred in bytes + PCIEBandwidth: ULONGLONG; // Amount of memory transferred over PCI-E in bytes + FanRPM: ULONG; // Fan rpm + Power: ULONG; // Power draw of the adapter in tenths of a percentage + Temperature: ULONG; // Temperature in deci-Celsius 1 = 0.1C + PowerStateOverride: UCHAR; // Overrides dxgkrnls power view of linked adapters. + end; + function D3DKMTQueryAdapterInfo(var Adapter: D3DKMT_QUERYADAPTERINFO): HRESULT; stdcall; external 'gdi32.dll'; function D3DKMTOpenAdapterFromHdc(var Adapter: D3DKMT_OPENADAPTERFROMHDC): HRESULT; stdcall; external 'gdi32.dll'; function D3DKMTOpenAdapterFromGdiDisplayName(var Adapter: D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME): HRESULT; stdcall; external 'gdi32.dll'; diff --git a/Plugin/AMDPlugin.dpr b/Plugin/AMDPlugin.dpr index ff386a2..27bbe17 100644 --- a/Plugin/AMDPlugin.dpr +++ b/Plugin/AMDPlugin.dpr @@ -2,8 +2,10 @@ { } { AMDPlugin - Rainmeter AMD GPU Plugin } { } -{ Version 0.5 } +{ Version 0.6 } { } +{ 2022-06-10 - 0.6 } +{ Added support the OD7(N) API } { 2021-01-14 - 0.5 } { Added support the OD8 API and 6000 Series } { 2020-11-08 - 0.4 } @@ -21,7 +23,7 @@ { 2020-10-03 - 0.1 } { Initial Release } { } -{ (c) 2021 by NaliLord } +{ (c) 2022 by NaliLord } { } {*******************************************************} @@ -47,14 +49,14 @@ const MIN_UPDATE_TIME = 250; type - TMeasureID = (Unknown, Temperature, Clock, MemoryClock, Voltage, Activity, PerformanceLevel, + TMeasureID = (Unknown, APIVersion, Temperature, Clock, MemoryClock, Voltage, Activity, Usage, PerformanceLevel, PCIECurrentBusSpeed, PCIECurrentBusLanes, PCIEMaxBusLanes, FanSpeedRPM, FanSpeedPercent, MemoryType, MemorySize, MemoryUsage, SharedLimit, DedicatedLimit, SharedUsage, DedicatedUsage, MemoryBandwidth, AdapterName, AdapterActive, FanSpeedPercentMin, FanSpeedPercentMax, FanSpeedRPMMin, FanSpeedRPMMax, BiosDate, BiosVersion, BiosPartNumber, AdapterIdentifier, NumberOfAdapters, NumberOfDisplays, DriverDate, DriverVersion); const - MEASUREID_NAMES: Array[TMeasureID] of String = ('Unknown', 'Temperature', 'Clock', 'MemoryClock', 'Voltage', 'Activity', 'PerformanceLevel', + MEASUREID_NAMES: Array[TMeasureID] of String = ('Unknown', 'APIVersion', 'Temperature', 'Clock', 'MemoryClock', 'Voltage', 'Activity', 'Usage', 'PerformanceLevel', 'PCIECurrentBusSpeed', 'PCIECurrentBusLanes', 'PCIEMaxBusLanes', 'FanSpeedRPM', 'FanSpeedPercent', 'MemoryType', 'MemorySize', 'MemoryUsage', 'SharedLimit', 'DedicatedLimit', 'SharedUsage', 'DedicatedUsage', 'MemoryBandwidth', 'AdapterName', 'AdapterActive', 'FanSpeedPercentMin', 'FanSpeedPercentMax', 'FanSpeedRPMMin', 'FanSpeedRPMMax', 'BiosDate', 'BiosVersion', @@ -67,10 +69,14 @@ type FName: String; FAdapter: Integer; FD3DKMT: TD3DKMTStatistics; + protected + function GetAdapterUsage(Index: Integer): Integer; + procedure SetAdapterUsage(Index: Integer; const Value: Integer); public property Name: String read FName write FName; property ID: TMeasureID read FID write FID; property Adapter: Integer read FAdapter write FAdapter; + property AdapterUsage[Idx: Integer]: Integer read GetAdapterUsage write SetAdapterUsage; property D3DKMT: TD3DKMTStatistics read FD3DKMT write FD3DKMT; end; @@ -87,6 +93,19 @@ function RmPathToAbsolute(rm: Pointer; relativePath: PWideChar): PWideChar; stdc procedure RmGet(rm: Pointer; typ: Integer); stdcall; external 'Rainmeter.dll'; procedure RmExecute(skin: Pointer; command: PWideChar); stdcall; external 'Rainmeter.dll'; +{ TMeasure } + +function TMeasure.GetAdapterUsage(Index: Integer): Integer; +begin + Result:=0; +end; + +procedure TMeasure.SetAdapterUsage(Index: Integer; const Value: Integer); +begin +end; + +{ Global } + procedure MeasureUpdate(AMeasure: TMeasure = nil); begin if GetTickCount64 - LastADLUpdate >= MIN_UPDATE_TIME then @@ -112,10 +131,6 @@ procedure Initialize(var AData: Pointer; ARm: Pointer); stdcall; var Measure: TMeasure; begin -// AllocConsole; - -// WriteLn('Initialize ->'); - if NOT Assigned(ADL) then ADL:=TADL.Create; if NOT Assigned(List) then @@ -128,10 +143,6 @@ begin Measure.Name:=RmReadString(ARm, 'MeasureID', '', True); Measure.ID:=TMeasureID(Max(0, IndexStr(Measure.Name, MEASUREID_NAMES))); Measure.Adapter:=Trunc(RmReadFormula(ARm, 'AdapterID', 0)); - -// WriteLn(' Name=', Measure.Name); -// WriteLn(' Adapter=', Measure.Adapter); - if Measure.ID IN [MemoryUsage, SharedLimit, DedicatedLimit, SharedUsage, DedicatedUsage] then if (Measure.Adapter >= 0) AND (Measure.Adapter < ADL.AdapterCount) then Measure.D3DKMT:=TD3DKMTStatistics.Create(ADL.Adapters[Measure.Adapter].PNP); @@ -140,7 +151,6 @@ begin end; AData:=Measure; -// WriteLn('<- Initialize'); end; procedure Reload(AData: Pointer; ARm: Pointer; var AMaxValue: Double); stdcall; @@ -152,7 +162,6 @@ function Update(AData: Pointer): Double; stdcall; var Measure: TMeasure; begin -// WriteLn('Update ->'); Result:=0.0; if Assigned(AData) then @@ -161,19 +170,16 @@ begin MeasureUpdate(Measure); -// WriteLn(' Measure: 0x', IntToHex(NativeInt(Measure), SizeOf(NativeInt) * 2)); - if (Measure.Adapter >= 0) AND (Measure.Adapter < ADL.AdapterCount) then begin -// WriteLn(Format(' Name=%s'#13#10' Adapter=%d'#13#10' Count=%d', [Measure.Name, Measure.Adapter, ADL.AdapterCount])); -// WriteLn(Format(' D3DKMT=%s', [BoolToStr(Assigned(Measure.D3DKMT), True)])); - case Measure.ID of + APIVersion : Result:=ADL.Adapters[Measure.Adapter].APIVersion; Temperature : Result:=ADL.Adapters[Measure.Adapter].Temp; Clock : Result:=ADL.Adapters[Measure.Adapter].Clock; MemoryClock : Result:=ADL.Adapters[Measure.Adapter].Memory; Voltage : Result:=ADL.Adapters[Measure.Adapter].Vddc; Activity : Result:=ADL.Adapters[Measure.Adapter].Activity; + Usage : ; PerformanceLevel : Result:=ADL.Adapters[Measure.Adapter].PerformanceLevel; PCIECurrentBusSpeed : Result:=ADL.Adapters[Measure.Adapter].BusSpeed; PCIECurrentBusLanes : Result:=ADL.Adapters[Measure.Adapter].BusLanes; @@ -195,16 +201,12 @@ begin end; end; end; - -// WriteLn(' Value=', FormatFloat('0.00', Result)); -// WriteLn('<- Update'); end; function GetString(AData: Pointer): PWideChar; stdcall; var Measure: TMeasure; begin -// WriteLn('GetString ->'); Result:=nil; if Assigned(AData) then @@ -213,13 +215,8 @@ begin MeasureUpdate(Measure); -// WriteLn(' Measure: 0x', IntToHex(NativeInt(Measure), SizeOf(NativeInt) * 2)); - if (Measure.Adapter >= 0) AND (Measure.Adapter < ADL.AdapterCount) then begin -// WriteLn(Format(' Name=%s'#13#10' Adapter=%d'#13#10' Count=%d', [Measure.Name, Measure.Adapter, ADL.AdapterCount])); -// WriteLn(Format(' D3DKMT=%s', [BoolToStr(Assigned(Measure.D3DKMT), True)])); - case Measure.ID of MemoryType : Result:=PWideChar(ADL.Adapters[Measure.Adapter].MemoryType); AdapterName : Result:=PWideChar(ADL.Adapters[Measure.Adapter].Name); @@ -231,13 +228,6 @@ begin end; end; end; - -// if Assigned(Result) then -// WriteLn(' Value=', Result) -// else -// WriteLn(' Value='); - -// WriteLn('<- GetString'); end; procedure Finalize(AData: Pointer); stdcall @@ -259,7 +249,7 @@ end; function GetPluginVersion: Cardinal; stdcall; begin - Result:=5; + Result:=6; end; function GetPluginAuthor: PWideChar; stdcall; diff --git a/Plugin/AMDPlugin.dproj b/Plugin/AMDPlugin.dproj index cd8d403..b5d64bc 100644 --- a/Plugin/AMDPlugin.dproj +++ b/Plugin/AMDPlugin.dproj @@ -1,11 +1,11 @@  {A4D8AE43-710D-4775-98A4-CA57A36429AE} - 19.1 + 19.4 None True Release - Win32 + Win64 3 Library AMDPlugin.dpr @@ -13,11 +13,31 @@ true + + true + Base + true + + + true + Base + true + + + true + Base + true + true Base true + + true + Base + true + true Base @@ -78,9 +98,38 @@ true true + + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= + Debug + false + android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar + + + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= + Debug + false + android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar + + + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + iPhoneAndiPad + Debug + $(MSBuildProjectName) + DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;inetdb;fmx;FireDACIBDriver;fmxdae;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;fmxobj;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;fmxase;$(DCC_UsePackage) + + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers + Debug + false + true + Base + true + DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;tethering;bindcompfmx;inetdb;fmx;FireDACIBDriver;fmxdae;dbexpress;IndyCore;dsnap;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;fmxobj;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;fmxase;$(DCC_UsePackage);$(DCC_UsePackage) + DBXSqliteDriver;RESTComponents;dxSpreadSheetCoreConditionalFormattingDialogsRS27;QuishSkinRS27;DBXInterBaseDriver;dxSpreadSheetConditionalFormattingDialogsRS27;vclactnband;dxGaugeControlRS27;vclFireDAC;dxSpreadSheetReportDesignerRS27;dxSpreadSheetRS27;bindcompvclsmp;cxPivotGridOLAPRS27;tethering;svnui;dxPSRichEditControlLnkRS27;JvGlobus;FireDACADSDriver;dxBarDBNavRS27;cxLibraryRS27;JvPluginSystem;dxRibbonCustomizationFormRS27;JvMM;cxPivotGridRS27;dxADOServerModeRS27;vcltouch;JvBands;vcldb;bindcompfmx;svn;dxPScxExtCommonRS27;JvJans;JvNet;inetdb;FMX.dxMemDataRS27;JvAppFrm;dxFlowChartDesignerRS27;cxTreeListRS27;dxPScxSchedulerLnkRS27;JvDotNetCtrls;fmx;FireDACIBDriver;fmxdae;vcledge;JvWizards;dxRichEditDocumentModelRS27;dxPsPrVwAdvRS27;dbexpress;IndyCore;dxRibbonRS27;dxOrgChartAdvancedCustomizeFormRS27;vclx;dxPSdxFCLnkRS27;JvPageComps;dsnap;dxSpellCheckerRS27;FireDACCommon;JvDB;dxTileControlRS27;dxPDFViewerRS27;RESTBackendComponents;FMX.dxGridRS27;dxBarExtItemsRS27;cxSchedulerRS27;cxGridEMFRS27;VCLRESTComponents;soapserver;FMX.dxControlsRS27;dxWizardControlRS27;cxSchedulerTreeBrowserRS27;dxRichEditControlRS27;JclDeveloperTools;dxPScxTLLnkRS27;vclie;bindengine;DBXMySQLDriver;CloudService;dxBarExtDBItemsRS27;FireDACMySQLDriver;dxPSCoreRS27;dxFlowChartLayoutsRS27;dxADOEMFRS27;cxExportRS27;JvCmp;FireDACCommonODBC;FireDACCommonDriver;JvHMI;dxPScxPivotGridLnkRS27;inet;cxSchedulerWebServiceStorageRS27;cxPivotGridChartRS27;IndyIPCommon;bindcompdbx;dxPSdxOCLnkRS27;JvCustom;vcl;IndyIPServer;dxPScxPCProdRS27;JvXPCtrls;IndySystem;dxHttpIndyRequestRS27;dxFlowChartRS27;dxMapControlRS27;dsnapcon;dxComnRS27;dxPSdxDBOCLnkRS27;dxPSdxGaugeControlLnkRS27;FireDACMSAccDriver;fmxFireDAC;dxmdsRS27;vclimg;dxEMFRS27;dxPSdxPDFViewerLnkRS27;FireDAC;cxTreeListdxBarPopupMenuRS27;FMX.dxLayoutControlRS27;dxCoreRS27;dxPScxVGridLnkRS27;dxPSdxSpreadSheetLnkRS27;dxPSPrVwRibbonRS27;Jcl;JvCore;FireDACSqliteDriver;FireDACPgDriver;JvCrypt;cxSchedulerRibbonStyleEventEditorRS27;soaprtl;DbxCommonDriver;dxTabbedMDIRS27;dxRichEditCoreRS27;JvDlgs;JvManagedThreads;dxCloudServiceLibraryRS27;JvRuntimeDesign;xmlrtl;soapmidas;JvTimeFramework;fmxobj;vclwinx;dxPScxCommonRS27;rtl;dxdborRS27;DbxClientDriver;dxdbtrRS27;CustomIPTransport;vcldsnap;JvSystem;dxSkinsCoreRS27;dxPScxGridLnkRS27;JvStdCtrls;bindcomp;appanalytics;dxSpreadSheetCoreRS27;dxRichEditControlCoreRS27;cxVerticalGridRS27;dxGDIPlusRS27;IndyIPClient;dxFireDACServerModeRS27;dxFlowChartAdvancedCustomizeFormRS27;bindcompvcl;dxDockingRS27;dxServerModeRS27;dxNavBarRS27;cxSchedulerGridRS27;dxPSLnksRS27;dxorgcRS27;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;dxDBXServerModeRS27;JclVcl;cxGridRS27;dsnapxml;dbrtl;IndyProtocols;inetdbxpress;dxBarRS27;dxPSdxLCLnkRS27;dxFireDACEMFRS27;dxPSdxMapControlLnkRS27;JclContainers;JvControls;JvPrintPreview;dxtrmdRS27;dxPSdxDBTVLnkRS27;fmxase;$(DCC_UsePackage) Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) @@ -124,16 +173,18 @@ 0 - FileDescription=$(MSBuildProjectName) $(Platform) $(Config);FileVersion=1.0.5.2;InternalName=$(MSBuildProjectName);LegalCopyright=(c) 2021 by NaliLord;OriginalFilename=AMDPlugin.dll;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=Rainmeter AMD GPU Plugin;ProductVersion=1.0.0.0 + FileDescription=$(MSBuildProjectName) $(Platform) $(Config);FileVersion=1.0.6.1;InternalName=$(MSBuildProjectName);LegalCopyright=(c) 2022 by NaliLord;OriginalFilename=AMDPlugin.dll;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=Rainmeter AMD GPU Plugin;ProductVersion=1.0.0.0 (None) - 5 - 2 + 6 + none + 1 (None) - FileDescription=$(MSBuildProjectName) $(Platform) $(Config);FileVersion=1.0.5.2;InternalName=$(MSBuildProjectName);LegalCopyright=(c) 2021 by NaliLord;OriginalFilename=AMDPlugin.dll;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=Rainmeter AMD GPU Plugin;ProductVersion=1.0.0.0 - 5 - 2 + FileDescription=$(MSBuildProjectName) $(Platform) $(Config);FileVersion=1.0.6.1;InternalName=$(MSBuildProjectName);LegalCopyright=(c) 2022 by NaliLord;OriginalFilename=AMDPlugin.dll;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=Rainmeter AMD GPU Plugin;ProductVersion=1.0.0.0 + 6 + none + 1 @@ -145,10 +196,6 @@ - - Cfg_2 - Base - Base @@ -156,6 +203,10 @@ Cfg_1 Base + + Cfg_2 + Base + Delphi.Personality.12 @@ -166,31 +217,31 @@ AMDPlugin.dpr - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components + Embarcadero C++Builder Office 2000 Servers Package + Embarcadero C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components - - - AMDPlugin.dll + + true - - + + true - - + + true - - + + + AMDPlugin.dll true @@ -218,6 +269,16 @@ 0 + + + classes + 64 + + + classes + 64 + + classes @@ -346,6 +407,16 @@ 1 + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + res\drawable-ldpi @@ -509,6 +580,11 @@ 1 .framework + + Contents\MacOS + 1 + .framework + 0 @@ -536,6 +612,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .dll;.bpl @@ -564,6 +645,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .bpl @@ -593,6 +679,10 @@ Contents\Resources\StartUp\ 0 + + Contents\Resources\StartUp\ + 0 + 0 @@ -858,6 +948,10 @@ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1 + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + @@ -868,6 +962,10 @@ ..\ 1 + + ..\ + 1 + @@ -878,6 +976,10 @@ Contents 1 + + Contents + 1 + @@ -888,6 +990,10 @@ Contents\Resources 1 + + Contents\Resources + 1 + @@ -918,6 +1024,10 @@ Contents\MacOS 1 + + Contents\MacOS + 1 + 0 @@ -956,19 +1066,24 @@ 1 - - + + + + - - - - + + + + False + False + False False + False True True diff --git a/Plugin/AMDPlugin.res b/Plugin/AMDPlugin.res index 3bc0369911981c6bac5571de9fc725c7c3327edc..a7fc5fab23ed0b2018357833e9c261013f687547 100644 GIT binary patch delta 38 ucmZo+Z(*NM!py+HHnDs$vl)ZQWLZXQRx<`Y27}45jG2r^n~yW@Wds1T#|ei3 delta 38 ucmZo+Z(*NM!pz9PI - - {801BB1D5-6ECE-4A1B-AA69-7DCA47388FAF} - 19.1 - VCL - TestApp.dpr - True - Debug - Win64 - 3 - Application - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - - - System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) - TestApp - $(BDS)\bin\delphi_PROJECTICON.ico - ..\Build\$(Platform)\$(Config) - ..\Build\$(Platform)\$(Config) - false - false - false - false - false - 1033 - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - - - $(BDS)\bin\default_app.manifest - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;inetdbbde;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapServer;DataSnapCommon;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DBXMSSQLDriver;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;CodeSiteExpressPkg;DataSnapFireDAC;FireDACDBXDriver;soapserver;inetdbxpress;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;FireDACASADriver;bindcompfmx;vcldbx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;inetdb;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;svnui;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;FMXTee;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VclSmp;FireDACMSSQLDriver;FireDAC;DBXInformixDriver;Intraweb;VCLRESTComponents;DataSnapConnectors;DataSnapServerMidas;dsnapcon;DBXFirebirdDriver;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;svn;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;bdertl;FireDACMSAccDriver;dbexpress;DataSnapIndy10ServerTransport;IndyIPClient;$(DCC_UsePackage) - 1033 - true - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) - true - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png - - - FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapServer;DataSnapCommon;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;DBXMSSQLDriver;IndyIPCommon;CloudService;FmxTeeUI;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;inetdbxpress;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;inetdb;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;FMXTee;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VclSmp;FireDACMSSQLDriver;FireDAC;DBXInformixDriver;Intraweb;VCLRESTComponents;DataSnapConnectors;DataSnapServerMidas;dsnapcon;DBXFirebirdDriver;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;FireDACMSAccDriver;dbexpress;DataSnapIndy10ServerTransport;IndyIPClient;$(DCC_UsePackage) - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png - $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - Debug - true - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - 1033 - $(BDS)\bin\default_app.manifest - - - DEBUG;$(DCC_Define) - true - false - true - true - true - - - false - Debug - - - true - PerMonitorV2 - true - 1033 - - - false - RELEASE;$(DCC_Define) - 0 - 0 - - - Debug - - - true - PerMonitorV2 - - - - MainSource - - -
frmMain
- dfm -
- - - - - - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - -
- - Delphi.Personality.12 - - - - - TestApp.dpr - - - Embarcadero C++Builder Office 2000 Servers Package - Embarcadero C++Builder Office XP Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - - - TestApp.rsm - true - - - - - TestApp.exe - true - - - - - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - classes - 1 - - - classes - 1 - - - - - res\xml - 1 - - - res\xml - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - library\lib\armeabi - 1 - - - library\lib\armeabi - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - library\lib\mips - 1 - - - library\lib\mips - 1 - - - - - library\lib\armeabi-v7a - 1 - - - library\lib\arm64-v8a - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - res\values-v21 - 1 - - - res\values-v21 - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - res\drawable - 1 - - - res\drawable - 1 - - - - - res\drawable-xxhdpi - 1 - - - res\drawable-xxhdpi - 1 - - - - - res\drawable-ldpi - 1 - - - res\drawable-ldpi - 1 - - - - - res\drawable-mdpi - 1 - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - res\drawable-hdpi - 1 - - - - - res\drawable-xhdpi - 1 - - - res\drawable-xhdpi - 1 - - - - - res\drawable-mdpi - 1 - - - res\drawable-mdpi - 1 - - - - - res\drawable-hdpi - 1 - - - res\drawable-hdpi - 1 - - - - - res\drawable-xhdpi - 1 - - - res\drawable-xhdpi - 1 - - - - - res\drawable-xxhdpi - 1 - - - res\drawable-xxhdpi - 1 - - - - - res\drawable-xxxhdpi - 1 - - - res\drawable-xxxhdpi - 1 - - - - - res\drawable-small - 1 - - - res\drawable-small - 1 - - - - - res\drawable-normal - 1 - - - res\drawable-normal - 1 - - - - - res\drawable-large - 1 - - - res\drawable-large - 1 - - - - - res\drawable-xlarge - 1 - - - res\drawable-xlarge - 1 - - - - - res\values - 1 - - - res\values - 1 - - - - - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - Contents\MacOS - 1 - .framework - - - Contents\MacOS - 1 - .framework - - - 0 - - - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - 0 - .dll;.bpl - - - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - Contents\MacOS - 1 - .dylib - - - 0 - .bpl - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - Contents\Resources\StartUp\ - 0 - - - Contents\Resources\StartUp\ - 0 - - - 0 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset - 1 - - - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - ..\ - 1 - - - ..\ - 1 - - - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).launchscreen - 64 - - - ..\$(PROJECTNAME).launchscreen - 64 - - - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - ..\ - 1 - - - ..\ - 1 - - - - - Contents - 1 - - - Contents - 1 - - - - - Contents\Resources - 1 - - - Contents\Resources - 1 - - - - - library\lib\armeabi-v7a - 1 - - - library\lib\arm64-v8a - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - Contents\MacOS - 1 - - - Contents\MacOS - 1 - - - 0 - - - - - library\lib\armeabi-v7a - 1 - - - - - 1 - - - 1 - - - - - Assets - 1 - - - Assets - 1 - - - - - Assets - 1 - - - Assets - 1 - - - - - - - - - - - - - - - True - True - - - 12 - - - - -