From ddaa718b98afbb686e9ad65f17fd92fb9bd9ea0c Mon Sep 17 00:00:00 2001 From: cdozdil Date: Sat, 11 Oct 2025 20:38:48 +0300 Subject: [PATCH] Prevent double tackedResources actions --- OptiScaler/pch.h | 8 +++ OptiScaler/resource_tracking/ResTrack_dx12.h | 69 +------------------- 2 files changed, 10 insertions(+), 67 deletions(-) diff --git a/OptiScaler/pch.h b/OptiScaler/pch.h index 31ff365b..f477ecfa 100644 --- a/OptiScaler/pch.h +++ b/OptiScaler/pch.h @@ -90,6 +90,14 @@ inline DWORD processId; #define LOG_FUNC_RESULT(result) spdlog::trace(__FUNCTION__ " result: {0:X}", (UINT64) result) +// #define TRACKING_LOGS + +#ifdef TRACKING_LOGS +#define LOG_TRACK(msg, ...) spdlog::debug(__FUNCTION__ " [RT] " msg, ##__VA_ARGS__) +#else +#define LOG_TRACK(msg, ...) +#endif + struct feature_version { unsigned int major; diff --git a/OptiScaler/resource_tracking/ResTrack_dx12.h b/OptiScaler/resource_tracking/ResTrack_dx12.h index b308fd89..3a117a94 100644 --- a/OptiScaler/resource_tracking/ResTrack_dx12.h +++ b/OptiScaler/resource_tracking/ResTrack_dx12.h @@ -9,15 +9,6 @@ #include -// Test resources if they are valid or not -// #define DEBUG_TRACKING - -#ifdef DEBUG_TRACKING -#define LOG_TRACK(msg, ...) spdlog::debug(__FUNCTION__ " " msg, ##__VA_ARGS__) -#else -#define LOG_TRACK(msg, ...) -#endif - #ifdef DEBUG_TRACKING static void TestResource(ResourceInfo* info) { @@ -140,18 +131,6 @@ typedef struct HeapInfo DetachFromOldResource(index); info[index] = setInfo; AttachToNewResource(index); - - { - std::scoped_lock lock(_trMutex); - - if (_trackedResources.contains(setInfo.buffer)) - _trackedResources[setInfo.buffer].push_back(&info[index]); - else - _trackedResources[setInfo.buffer] = { &info[index] }; - - LOG_TRACK("Add resource: {:X} to info: {:X}, Res: {}x{}", (size_t) setInfo.buffer, (size_t) &info[index], - setInfo.width, setInfo.height); - } } void SetByGpuHandle(SIZE_T gpuHandle, ResourceInfo setInfo) const @@ -168,18 +147,6 @@ typedef struct HeapInfo DetachFromOldResource(index); info[index] = setInfo; AttachToNewResource(index); - - { - std::scoped_lock lock(_trMutex); - - if (_trackedResources.contains(setInfo.buffer)) - _trackedResources[setInfo.buffer].push_back(&info[index]); - else - _trackedResources[setInfo.buffer] = { &info[index] }; - - LOG_TRACK("Add resource: {:X} to info: {:X}, Res: {}x{}", (size_t) setInfo.buffer, (size_t) &info[index], - setInfo.width, setInfo.height); - } } void ClearByCpuHandle(SIZE_T cpuHandle) const @@ -191,24 +158,8 @@ typedef struct HeapInfo if (info[index].buffer != nullptr) { - std::scoped_lock lock(_trMutex); - LOG_TRACK("Resource: {:X}, Res: {}x{}", (size_t) info[index].buffer, info[index].width, info[index].height); - - if (_trackedResources.contains(info[index].buffer)) - { - auto vector = &_trackedResources[info[index].buffer]; - - for (size_t i = 0; i < vector->size(); i++) - { - if (vector->at(i) == &info[index]) - { - LOG_TRACK("Erase from _trackedResources info: {:X}", (size_t) vector->at(i)); - vector->erase(vector->begin() + i); - break; - } - } - } + DetachFromOldResource(index); } info[index].buffer = nullptr; @@ -224,24 +175,8 @@ typedef struct HeapInfo if (info[index].buffer != nullptr) { - std::scoped_lock lock(_trMutex); - LOG_TRACK("Resource: {:X}, Res: {}x{}", (size_t) info[index].buffer, info[index].width, info[index].height); - - if (_trackedResources.contains(info[index].buffer)) - { - auto vector = &_trackedResources[info[index].buffer]; - - for (size_t i = 0; i < vector->size(); i++) - { - if (vector->at(i) == &info[index]) - { - LOG_TRACK("Erase from _trackedResources info: {:X}", (size_t) vector->at(i)); - vector->erase(vector->begin() + i); - break; - } - } - } + DetachFromOldResource(index); } info[index].buffer = nullptr;