Add Path A/B/C FSR3 runtime detection with clear FG fallback status

This commit is contained in:
Kelsi 2026-03-09 00:01:45 -07:00
parent 5ad4b9be2d
commit 93850ac6dc
7 changed files with 92 additions and 17 deletions

View file

@ -48,6 +48,12 @@ struct AmdFsr3RuntimeDispatchDesc {
class AmdFsr3Runtime {
public:
enum class LoadPathKind {
None,
Official,
Wrapper
};
AmdFsr3Runtime();
~AmdFsr3Runtime();
@ -59,6 +65,8 @@ public:
bool isReady() const { return ready_; }
bool isFrameGenerationReady() const { return frameGenerationReady_; }
const std::string& loadedLibraryPath() const { return loadedLibraryPath_; }
LoadPathKind loadPathKind() const { return loadPathKind_; }
const std::string& lastError() const { return lastError_; }
private:
void* libHandle_ = nullptr;
@ -67,6 +75,8 @@ private:
size_t scratchBufferSize_ = 0;
bool ready_ = false;
bool frameGenerationReady_ = false;
LoadPathKind loadPathKind_ = LoadPathKind::None;
std::string lastError_;
struct RuntimeFns;
RuntimeFns* fns_ = nullptr;

View file

@ -294,6 +294,8 @@ public:
#endif
bool isAmdFsr3FramegenRuntimeActive() const { return fsr2_.amdFsr3FramegenRuntimeActive; }
bool isAmdFsr3FramegenRuntimeReady() const { return fsr2_.amdFsr3FramegenRuntimeReady; }
const char* getAmdFsr3FramegenRuntimePath() const;
const std::string& getAmdFsr3FramegenRuntimeError() const { return fsr2_.amdFsr3RuntimeLastError; }
size_t getAmdFsr3UpscaleDispatchCount() const { return fsr2_.amdFsr3UpscaleDispatchCount; }
size_t getAmdFsr3FramegenDispatchCount() const { return fsr2_.amdFsr3FramegenDispatchCount; }
size_t getAmdFsr3FallbackCount() const { return fsr2_.amdFsr3FallbackCount; }
@ -448,6 +450,8 @@ private:
bool amdFsr3FramegenEnabled = false;
bool amdFsr3FramegenRuntimeActive = false;
bool amdFsr3FramegenRuntimeReady = false;
std::string amdFsr3RuntimePath = "Path C";
std::string amdFsr3RuntimeLastError{};
size_t amdFsr3UpscaleDispatchCount = 0;
size_t amdFsr3FramegenDispatchCount = 0;
size_t amdFsr3FallbackCount = 0;