1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00
OpenDX/src/dxvk/dxvk_barrier.h

48 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "dxvk_buffer.h"
#include "dxvk_cmdlist.h"
#include "dxvk_image.h"
namespace dxvk {
/**
* \brief Barrier set
*
* Accumulates memory barriers and provides a
* method to record all those barriers into a
* command buffer at once.
*/
class DxvkBarrierSet {
public:
DxvkBarrierSet();
~DxvkBarrierSet();
void accessBuffer(
const Rc<DxvkBuffer>& buffer,
VkDeviceSize offset,
VkDeviceSize size,
VkPipelineStageFlags stages,
VkAccessFlags access);
void recordCommands(
2017-12-01 10:51:58 +01:00
const Rc<DxvkCommandList>& commandList);
void reset();
private:
VkPipelineStageFlags m_srcStages = 0;
VkPipelineStageFlags m_dstStages = 0;
std::vector<VkMemoryBarrier> m_memBarriers;
std::vector<VkBufferMemoryBarrier> m_bufBarriers;
std::vector<VkImageMemoryBarrier> m_imgBarriers;
DxvkResourceAccessTypes getAccessTypes(VkAccessFlags flags) const;
};
}