mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-12 13:54:14 +01:00
[dxvk] Remove legacy buffer renaming interface
This commit is contained in:
parent
6f6e75b4b8
commit
4064c89e8c
@ -289,20 +289,6 @@ namespace dxvk {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Replaces backing resource
|
|
||||||
*
|
|
||||||
* Replaces the underlying buffer and implicitly marks
|
|
||||||
* any buffer views using this resource as dirty. Do
|
|
||||||
* not call this directly as this is called implicitly
|
|
||||||
* by the context's \c invalidateBuffer method.
|
|
||||||
* \param [in] slice The new backing resource
|
|
||||||
* \returns Previous buffer slice
|
|
||||||
*/
|
|
||||||
DxvkBufferSliceHandle rename(const DxvkBufferSliceHandle& slice) {
|
|
||||||
return std::exchange(m_physSlice, slice);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Transform feedback vertex stride
|
* \brief Transform feedback vertex stride
|
||||||
*
|
*
|
||||||
@ -329,7 +315,7 @@ namespace dxvk {
|
|||||||
* \brief Allocates new buffer slice
|
* \brief Allocates new buffer slice
|
||||||
* \returns The new buffer slice
|
* \returns The new buffer slice
|
||||||
*/
|
*/
|
||||||
DxvkBufferSliceHandle allocSlice() {
|
DxvkBufferAllocation allocateSlice() {
|
||||||
std::unique_lock<sync::Spinlock> freeLock(m_freeMutex);
|
std::unique_lock<sync::Spinlock> freeLock(m_freeMutex);
|
||||||
|
|
||||||
// If no slices are available, swap the two free lists.
|
// If no slices are available, swap the two free lists.
|
||||||
@ -360,28 +346,26 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Take the first slice from the queue
|
// Take the first slice from the queue
|
||||||
DxvkBufferSliceHandle result = m_freeSlices.back();
|
DxvkBufferAllocation result(m_freeSlices.back());
|
||||||
m_freeSlices.pop_back();
|
m_freeSlices.pop_back();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Allocates a new buffer slice
|
* \brief Replaces backing resource
|
||||||
* \returns New buffer slice
|
|
||||||
*/
|
|
||||||
DxvkBufferAllocation allocateSlice() {
|
|
||||||
return DxvkBufferAllocation(allocSlice());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Replaces backing storage
|
|
||||||
*
|
*
|
||||||
* Implicitly invalidates all views created for the buffer.
|
* Replaces the underlying buffer and implicitly marks
|
||||||
* \param [in] slice New buffer slice
|
* any buffer views using this resource as dirty. Do
|
||||||
* \returns Previous buffer allocation for lifetime tracking.
|
* not call this directly as this is called implicitly
|
||||||
|
* by the context's \c invalidateBuffer method.
|
||||||
|
* \param [in] slice The new backing resource
|
||||||
|
* \returns Previous buffer slice
|
||||||
*/
|
*/
|
||||||
DxvkBufferAllocation assignSlice(DxvkBufferAllocation&& slice) {
|
DxvkBufferAllocation assignSlice(DxvkBufferAllocation&& slice) {
|
||||||
return DxvkBufferAllocation(rename(slice.m_slice));
|
DxvkBufferAllocation result(m_physSlice);
|
||||||
|
m_physSlice = slice.m_slice;
|
||||||
|
slice.m_slice = DxvkBufferSliceHandle();
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -403,7 +387,7 @@ namespace dxvk {
|
|||||||
void freeSlice(const DxvkBufferSliceHandle& slice) {
|
void freeSlice(const DxvkBufferSliceHandle& slice) {
|
||||||
// Add slice to a separate free list to reduce lock contention.
|
// Add slice to a separate free list to reduce lock contention.
|
||||||
std::unique_lock<sync::Spinlock> swapLock(m_swapMutex);
|
std::unique_lock<sync::Spinlock> swapLock(m_swapMutex);
|
||||||
m_nextSlices.push_back(slice);
|
m_nextSlices.emplace_back(slice);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -438,11 +422,11 @@ namespace dxvk {
|
|||||||
VkDeviceSize m_maxAllocationSize = 0;
|
VkDeviceSize m_maxAllocationSize = 0;
|
||||||
|
|
||||||
std::vector<DxvkBufferHandle> m_buffers;
|
std::vector<DxvkBufferHandle> m_buffers;
|
||||||
std::vector<DxvkBufferSliceHandle> m_freeSlices;
|
std::vector<DxvkBufferAllocation> m_freeSlices;
|
||||||
|
|
||||||
alignas(CACHE_LINE_SIZE)
|
alignas(CACHE_LINE_SIZE)
|
||||||
sync::Spinlock m_swapMutex;
|
sync::Spinlock m_swapMutex;
|
||||||
std::vector<DxvkBufferSliceHandle> m_nextSlices;
|
std::vector<DxvkBufferAllocation> m_nextSlices;
|
||||||
|
|
||||||
void pushSlice(const DxvkBufferHandle& handle, uint32_t index) {
|
void pushSlice(const DxvkBufferHandle& handle, uint32_t index) {
|
||||||
DxvkBufferSliceHandle slice;
|
DxvkBufferSliceHandle slice;
|
||||||
@ -450,7 +434,7 @@ namespace dxvk {
|
|||||||
slice.offset = handle.getBaseOffset() + m_physSliceStride * index;
|
slice.offset = handle.getBaseOffset() + m_physSliceStride * index;
|
||||||
slice.length = m_physSliceLength;
|
slice.length = m_physSliceLength;
|
||||||
slice.mapPtr = handle.memory.mapPtr(m_physSliceStride * index);
|
slice.mapPtr = handle.memory.mapPtr(m_physSliceStride * index);
|
||||||
m_freeSlices.push_back(slice);
|
m_freeSlices.emplace_back(slice);
|
||||||
}
|
}
|
||||||
|
|
||||||
DxvkBufferHandle allocBuffer(
|
DxvkBufferHandle allocBuffer(
|
||||||
|
@ -1865,13 +1865,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::invalidateBuffer(
|
|
||||||
const Rc<DxvkBuffer>& buffer,
|
|
||||||
const DxvkBufferSliceHandle& slice) {
|
|
||||||
invalidateBuffer(buffer, DxvkBufferAllocation(slice));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::resolveImage(
|
void DxvkContext::resolveImage(
|
||||||
const Rc<DxvkImage>& dstImage,
|
const Rc<DxvkImage>& dstImage,
|
||||||
const Rc<DxvkImage>& srcImage,
|
const Rc<DxvkImage>& srcImage,
|
||||||
|
@ -965,10 +965,6 @@ namespace dxvk {
|
|||||||
const Rc<DxvkBuffer>& buffer,
|
const Rc<DxvkBuffer>& buffer,
|
||||||
DxvkBufferAllocation&& slice);
|
DxvkBufferAllocation&& slice);
|
||||||
|
|
||||||
void invalidateBuffer(
|
|
||||||
const Rc<DxvkBuffer>& buffer,
|
|
||||||
const DxvkBufferSliceHandle& slice);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Updates push constants
|
* \brief Updates push constants
|
||||||
*
|
*
|
||||||
|
@ -1,17 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "dxvk_include.h"
|
#include "dxvk_include.h"
|
||||||
|
#include "dxvk_memory.h"
|
||||||
|
|
||||||
namespace dxvk {
|
namespace dxvk {
|
||||||
|
|
||||||
enum class DxvkAccess : uint32_t {
|
|
||||||
Read = 0,
|
|
||||||
Write = 1,
|
|
||||||
None = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
using DxvkAccessFlags = Flags<DxvkAccess>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief DXVK resource
|
* \brief DXVK resource
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user