mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 10:54:16 +01:00
[dxvk] Remove std::vector from DxvkDataBuffer
Vectors are zero-initialized upon resize, which is unnecessary in this case and potentially impacts performance.
This commit is contained in:
parent
516d7f091e
commit
a90c2843a7
@ -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();
|
||||
|
@ -35,8 +35,9 @@ namespace dxvk {
|
||||
|
||||
private:
|
||||
|
||||
std::vector<char> 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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user