1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-20 10:54:16 +01:00

[dxvk] Reintroduce resource cookies

This commit is contained in:
Philip Rebohle 2024-10-17 22:06:19 +02:00 committed by Philip Rebohle
parent 809257051b
commit 7ccfb57d57
2 changed files with 18 additions and 0 deletions

View File

@ -7,6 +7,9 @@
namespace dxvk { namespace dxvk {
std::atomic<uint64_t> DxvkPagedResource::s_cookie = { 0u };
DxvkPagedResource::~DxvkPagedResource() { DxvkPagedResource::~DxvkPagedResource() {
} }

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <atomic>
#include <map> #include <map>
#include "dxvk_access.h" #include "dxvk_access.h"
@ -434,8 +435,19 @@ namespace dxvk {
public: public:
DxvkPagedResource()
: m_cookie(++s_cookie) { }
virtual ~DxvkPagedResource(); virtual ~DxvkPagedResource();
/**
* \brief Queries resource cookie
* \returns Resource cookie
*/
uint64_t cookie() const {
return m_cookie;
}
/** /**
* \brief Increments reference count * \brief Increments reference count
*/ */
@ -513,11 +525,14 @@ namespace dxvk {
private: private:
std::atomic<uint64_t> m_useCount = { 0u }; std::atomic<uint64_t> m_useCount = { 0u };
uint64_t m_cookie = { 0u };
static constexpr uint64_t getIncrement(DxvkAccess access) { static constexpr uint64_t getIncrement(DxvkAccess access) {
return uint64_t(1u) << (uint32_t(access) * 20u); return uint64_t(1u) << (uint32_t(access) * 20u);
} }
static std::atomic<uint64_t> s_cookie;
}; };