From 7ccfb57d57f0228ce572ef46f1e9c393cf516597 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 17 Oct 2024 22:06:19 +0200 Subject: [PATCH] [dxvk] Reintroduce resource cookies --- src/dxvk/dxvk_sparse.cpp | 3 +++ src/dxvk/dxvk_sparse.h | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/dxvk/dxvk_sparse.cpp b/src/dxvk/dxvk_sparse.cpp index dbe339560..8c469f254 100644 --- a/src/dxvk/dxvk_sparse.cpp +++ b/src/dxvk/dxvk_sparse.cpp @@ -7,6 +7,9 @@ namespace dxvk { + std::atomic DxvkPagedResource::s_cookie = { 0u }; + + DxvkPagedResource::~DxvkPagedResource() { } diff --git a/src/dxvk/dxvk_sparse.h b/src/dxvk/dxvk_sparse.h index e7df91a8f..04bef8e9a 100644 --- a/src/dxvk/dxvk_sparse.h +++ b/src/dxvk/dxvk_sparse.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "dxvk_access.h" @@ -434,8 +435,19 @@ namespace dxvk { public: + DxvkPagedResource() + : m_cookie(++s_cookie) { } + virtual ~DxvkPagedResource(); + /** + * \brief Queries resource cookie + * \returns Resource cookie + */ + uint64_t cookie() const { + return m_cookie; + } + /** * \brief Increments reference count */ @@ -513,11 +525,14 @@ namespace dxvk { private: std::atomic m_useCount = { 0u }; + uint64_t m_cookie = { 0u }; static constexpr uint64_t getIncrement(DxvkAccess access) { return uint64_t(1u) << (uint32_t(access) * 20u); } + static std::atomic s_cookie; + };