1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00
OpenDX/src/dxvk/dxvk_event.h
Philip Rebohle 757bb2bad7
[dxvk] Mark events and queries as available by default
Fixes a lockup in World of Warships, which waits for an event query
to be signaled without actually ever calling End() for that query.
2018-02-27 10:14:53 +01:00

69 lines
1.2 KiB
C++

#pragma once
#include <mutex>
#include "dxvk_include.h"
namespace dxvk {
/**
* \brief Event status
*/
enum class DxvkEventStatus {
Reset = 0,
Signaled = 1,
};
/**
* \brief Event
*
* A CPU-side fence that will be signaled after
* all previous Vulkan commands recorded to a
* command buffer have finished executing.
*/
class DxvkEvent : public RcObject {
public:
DxvkEvent();
~DxvkEvent();
/**
* \brief Resets the event
* \returns New revision ID
*/
uint32_t reset();
/**
* \brief Signals the event
* \param [in] revision The revision ID
*/
void signal(uint32_t revision);
/**
* \brief Queries event status
* \returns Current event status
*/
DxvkEventStatus getStatus();
private:
std::mutex m_mutex;
DxvkEventStatus m_status = DxvkEventStatus::Signaled;
uint32_t m_revision = 0;
};
/**
* \brief Event revision
*
* Stores the event object and the
* version ID for event operations.
*/
struct DxvkEventRevision {
Rc<DxvkEvent> event;
uint32_t revision;
};
}