diff --git a/src/dxvk/dxvk_data.cpp b/src/dxvk/dxvk_data.cpp index ebcc06b1..bece0efd 100644 --- a/src/dxvk/dxvk_data.cpp +++ b/src/dxvk/dxvk_data.cpp @@ -5,17 +5,19 @@ namespace dxvk { DxvkDataBuffer:: DxvkDataBuffer() { } - DxvkDataBuffer::~DxvkDataBuffer() { } + DxvkDataBuffer::DxvkDataBuffer(size_t size) + : m_data(new char[size]), m_size(size) { } - DxvkDataBuffer::DxvkDataBuffer(size_t size) { - m_data.resize(size); + + DxvkDataBuffer::~DxvkDataBuffer() { + delete[] m_data; } DxvkDataSlice DxvkDataBuffer::alloc(size_t n) { const size_t offset = m_offset; - if (offset + n <= m_data.size()) { + if (offset + n <= m_size) { m_offset += align(n, CACHE_LINE_SIZE); return DxvkDataSlice(this, offset, n); } return DxvkDataSlice(); diff --git a/src/dxvk/dxvk_data.h b/src/dxvk/dxvk_data.h index 097f10ad..2a5ee924 100644 --- a/src/dxvk/dxvk_data.h +++ b/src/dxvk/dxvk_data.h @@ -35,8 +35,9 @@ namespace dxvk { private: - std::vector m_data; - size_t m_offset = 0; + char* m_data = nullptr; + size_t m_size = 0; + size_t m_offset = 0; }; @@ -62,7 +63,7 @@ namespace dxvk { void* ptr() const { return m_buffer != nullptr - ? m_buffer->m_data.data() + m_offset + ? m_buffer->m_data + m_offset : nullptr; }