1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-05 01:24:14 +01:00

[dxvk] Remove DxvkStagingDataAlloc

Unused and overly clunky.
This commit is contained in:
Philip Rebohle 2022-02-12 17:02:19 +01:00
parent 8518572d13
commit d262bebd90
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 0 additions and 110 deletions

View File

@ -3,71 +3,6 @@
namespace dxvk {
DxvkStagingDataAlloc::DxvkStagingDataAlloc(const Rc<DxvkDevice>& device)
: m_device(device) {
}
DxvkStagingDataAlloc::~DxvkStagingDataAlloc() {
}
DxvkBufferSlice DxvkStagingDataAlloc::alloc(VkDeviceSize align, VkDeviceSize size) {
if (size > MaxBufferSize)
return DxvkBufferSlice(createBuffer(size));
if (m_buffer == nullptr)
m_buffer = createBuffer(MaxBufferSize);
if (!m_buffer->isInUse())
m_offset = 0;
m_offset = dxvk::align(m_offset, align);
if (m_offset + size > MaxBufferSize) {
m_offset = 0;
if (m_buffers.size() < MaxBufferCount)
m_buffers.push(std::move(m_buffer));
if (!m_buffers.front()->isInUse()) {
m_buffer = std::move(m_buffers.front());
m_buffers.pop();
} else {
m_buffer = createBuffer(MaxBufferSize);
}
}
DxvkBufferSlice slice(m_buffer, m_offset, size);
m_offset = dxvk::align(m_offset + size, align);
return slice;
}
void DxvkStagingDataAlloc::trim() {
m_buffer = nullptr;
m_offset = 0;
while (!m_buffers.empty())
m_buffers.pop();
}
Rc<DxvkBuffer> DxvkStagingDataAlloc::createBuffer(VkDeviceSize size) {
DxvkBufferCreateInfo info;
info.size = size;
info.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
info.stages = VK_PIPELINE_STAGE_TRANSFER_BIT;
info.access = VK_ACCESS_TRANSFER_READ_BIT;
return m_device->createBuffer(info,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
}
DxvkStagingBuffer::DxvkStagingBuffer(
const Rc<DxvkDevice>& device,
VkDeviceSize size)

View File

@ -8,51 +8,6 @@ namespace dxvk {
class DxvkDevice;
/**
* \brief Staging data allocator
*
* Allocates buffer slices for resource uploads,
* while trying to keep the number of allocations
* but also the amount of allocated memory low.
*/
class DxvkStagingDataAlloc {
constexpr static VkDeviceSize MaxBufferSize = 1 << 25; // 32 MiB
constexpr static uint32_t MaxBufferCount = 2;
public:
DxvkStagingDataAlloc(const Rc<DxvkDevice>& device);
~DxvkStagingDataAlloc();
/**
* \brief Alloctaes a staging buffer slice
*
* \param [in] align Alignment of the allocation
* \param [in] size Size of the allocation
* \returns Staging buffer slice
*/
DxvkBufferSlice alloc(VkDeviceSize align, VkDeviceSize size);
/**
* \brief Deletes all staging buffers
*
* Destroys allocated buffers and
* releases all buffer memory.
*/
void trim();
private:
Rc<DxvkDevice> m_device;
Rc<DxvkBuffer> m_buffer;
VkDeviceSize m_offset = 0;
std::queue<Rc<DxvkBuffer>> m_buffers;
Rc<DxvkBuffer> createBuffer(VkDeviceSize size);
};
/**
* \brief Staging buffer
*