mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxvk] Implement method to signal GPU events
This commit is contained in:
parent
6b9653d261
commit
3dbd755075
@ -124,6 +124,7 @@ namespace dxvk {
|
|||||||
void DxvkCommandList::reset() {
|
void DxvkCommandList::reset() {
|
||||||
m_statCounters.reset();
|
m_statCounters.reset();
|
||||||
m_bufferTracker.reset();
|
m_bufferTracker.reset();
|
||||||
|
m_gpuEventTracker.reset();
|
||||||
m_eventTracker.reset();
|
m_eventTracker.reset();
|
||||||
m_queryTracker.reset();
|
m_queryTracker.reset();
|
||||||
m_stagingAlloc.reset();
|
m_stagingAlloc.reset();
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "dxvk_buffer.h"
|
#include "dxvk_buffer.h"
|
||||||
#include "dxvk_descriptor.h"
|
#include "dxvk_descriptor.h"
|
||||||
#include "dxvk_event.h"
|
#include "dxvk_event.h"
|
||||||
|
#include "dxvk_gpu_event.h"
|
||||||
#include "dxvk_lifetime.h"
|
#include "dxvk_lifetime.h"
|
||||||
#include "dxvk_limits.h"
|
#include "dxvk_limits.h"
|
||||||
#include "dxvk_pipelayout.h"
|
#include "dxvk_pipelayout.h"
|
||||||
@ -164,6 +165,17 @@ namespace dxvk {
|
|||||||
m_descriptorPoolTracker.trackDescriptorPool(pool);
|
m_descriptorPoolTracker.trackDescriptorPool(pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Tracks a GPU event
|
||||||
|
*
|
||||||
|
* The event will be returned to its event pool
|
||||||
|
* after the command buffer has finished executing.
|
||||||
|
* \param [in] handle Event handle
|
||||||
|
*/
|
||||||
|
void trackGpuEvent(DxvkGpuEventHandle handle) {
|
||||||
|
m_gpuEventTracker.trackEvent(handle);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Signals tracked events
|
* \brief Signals tracked events
|
||||||
*
|
*
|
||||||
@ -592,6 +604,13 @@ namespace dxvk {
|
|||||||
depthBiasSlopeFactor);
|
depthBiasSlopeFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cmdSetEvent(
|
||||||
|
VkEvent event,
|
||||||
|
VkPipelineStageFlags stages) {
|
||||||
|
m_vkd->vkCmdSetEvent(m_execBuffer, event, stages);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cmdSetScissor(
|
void cmdSetScissor(
|
||||||
uint32_t firstScissor,
|
uint32_t firstScissor,
|
||||||
@ -661,6 +680,7 @@ namespace dxvk {
|
|||||||
DxvkStagingAlloc m_stagingAlloc;
|
DxvkStagingAlloc m_stagingAlloc;
|
||||||
DxvkQueryTracker m_queryTracker;
|
DxvkQueryTracker m_queryTracker;
|
||||||
DxvkEventTracker m_eventTracker;
|
DxvkEventTracker m_eventTracker;
|
||||||
|
DxvkGpuEventTracker m_gpuEventTracker;
|
||||||
DxvkBufferTracker m_bufferTracker;
|
DxvkBufferTracker m_bufferTracker;
|
||||||
DxvkStatCounters m_statCounters;
|
DxvkStatCounters m_statCounters;
|
||||||
|
|
||||||
|
@ -1762,6 +1762,19 @@ namespace dxvk {
|
|||||||
void DxvkContext::signalEvent(const DxvkEventRevision& event) {
|
void DxvkContext::signalEvent(const DxvkEventRevision& event) {
|
||||||
m_cmd->trackEvent(event);
|
m_cmd->trackEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DxvkContext::signalGpuEvent(const Rc<DxvkGpuEvent>& event) {
|
||||||
|
this->spillRenderPass();
|
||||||
|
|
||||||
|
DxvkGpuEventHandle handle = m_gpuEvents->allocEvent();
|
||||||
|
|
||||||
|
m_cmd->cmdSetEvent(handle.event,
|
||||||
|
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
|
||||||
|
|
||||||
|
m_cmd->trackGpuEvent(event->reset(handle));
|
||||||
|
m_cmd->trackResource(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::writeTimestamp(const DxvkQueryRevision& query) {
|
void DxvkContext::writeTimestamp(const DxvkQueryRevision& query) {
|
||||||
|
@ -773,6 +773,13 @@ namespace dxvk {
|
|||||||
void signalEvent(
|
void signalEvent(
|
||||||
const DxvkEventRevision& event);
|
const DxvkEventRevision& event);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Signals a GPU event
|
||||||
|
* \param [in] event The event
|
||||||
|
*/
|
||||||
|
void signalGpuEvent(
|
||||||
|
const Rc<DxvkGpuEvent>& event);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Writes to a timestamp query
|
* \brief Writes to a timestamp query
|
||||||
* \param [in] query The timestamp query
|
* \param [in] query The timestamp query
|
||||||
|
Loading…
x
Reference in New Issue
Block a user