/
antonprv
/
Lightbringer
Обзор
Документация
Войти
/
antonprv
/
Lightbringer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
vite-fork
Source/GPUCheck/Private/GPUCheck.cpp
64 строки
2 KB
Your Name
Finished with asset migration and optimization, now working on motion matching system
30 дек 2025, 00:34
30 дек 2025, 00:34
696d35c
Код
Авторство
О чём код?
// Copyright Anton Piruev. All Rights Reserved. // You can use this project non-commercially for educational purposes, any // commercial use, derivative commercial use is strictly prohibited #include "GPUCheck.h" #define LOCTEXT_NAMESPACE "FGPUCheckModule" int32 FGPUCheckModule::GetTotalVRAM() { #if PLATFORM_WINDOWS DXGI_QUERY_VIDEO_MEMORY_INFO Info = GetVideoMemoryInfo(); if (Info.Budget > 0) { return static_cast<int32>(Info.Budget / 1024 / 1024); } #endif return FallbackTotalVRAMMB; } int32 FGPUCheckModule::GetUsedVRAM() { #if PLATFORM_WINDOWS DXGI_QUERY_VIDEO_MEMORY_INFO Info = GetVideoMemoryInfo(); if (Info.CurrentUsage > 0) { return static_cast<int32>(Info.CurrentUsage / 1024 / 1024); } #endif return FallbackUsedVRAMMB; } DXGI_QUERY_VIDEO_MEMORY_INFO FGPUCheckModule::GetVideoMemoryInfo() { DXGI_QUERY_VIDEO_MEMORY_INFO VideoMemoryInfo = {}; #if PLATFORM_WINDOWS IDXGIFactory4* PFactory = nullptr; if (SUCCEEDED( CreateDXGIFactory1(__uuidof(IDXGIFactory4), (void**)&PFactory)) && PFactory) { IDXGIAdapter3* Adapter = nullptr; if (SUCCEEDED(PFactory->EnumAdapters( 0, reinterpret_cast<IDXGIAdapter**>(&Adapter))) && Adapter) { if (FAILED(Adapter->QueryVideoMemoryInfo( 0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &VideoMemoryInfo))) { // Query failed, will fallback FMemory::Memzero(&VideoMemoryInfo, sizeof(VideoMemoryInfo)); } Adapter->Release(); } PFactory->Release(); } #endif return VideoMemoryInfo; } #undef LOCTEXT_NAMESPACE IMPLEMENT_MODULE(FGPUCheckModule, GPUCheck);