mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-24 04:54:14 +01:00
[dxvk] Track transform feedback buffer access
This commit is contained in:
parent
f0c6e27938
commit
ea99f2f2c5
@ -5530,8 +5530,14 @@ namespace dxvk {
|
|||||||
ctrBuffers[i] = physSlice.handle;
|
ctrBuffers[i] = physSlice.handle;
|
||||||
ctrOffsets[i] = physSlice.offset;
|
ctrOffsets[i] = physSlice.offset;
|
||||||
|
|
||||||
if (physSlice.handle != VK_NULL_HANDLE)
|
if (physSlice.handle) {
|
||||||
m_cmd->track(m_state.xfb.activeCounters[i].buffer(), DxvkAccess::Read);
|
accessBuffer(DxvkCmdBuffer::ExecBuffer, m_state.xfb.activeCounters[i],
|
||||||
|
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
|
||||||
|
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT |
|
||||||
|
VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT);
|
||||||
|
|
||||||
|
m_cmd->track(m_state.xfb.activeCounters[i].buffer(), DxvkAccess::Write);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cmd->cmdBeginTransformFeedback(
|
m_cmd->cmdBeginTransformFeedback(
|
||||||
@ -5556,9 +5562,6 @@ namespace dxvk {
|
|||||||
ctrBuffers[i] = physSlice.handle;
|
ctrBuffers[i] = physSlice.handle;
|
||||||
ctrOffsets[i] = physSlice.offset;
|
ctrOffsets[i] = physSlice.offset;
|
||||||
|
|
||||||
if (physSlice.handle != VK_NULL_HANDLE)
|
|
||||||
m_cmd->track(m_state.xfb.activeCounters[i].buffer(), DxvkAccess::Write);
|
|
||||||
|
|
||||||
m_state.xfb.activeCounters[i] = DxvkBufferSlice();
|
m_state.xfb.activeCounters[i] = DxvkBufferSlice();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6407,14 +6410,18 @@ namespace dxvk {
|
|||||||
xfbOffsets[i] = physSlice.offset;
|
xfbOffsets[i] = physSlice.offset;
|
||||||
xfbLengths[i] = physSlice.length;
|
xfbLengths[i] = physSlice.length;
|
||||||
|
|
||||||
if (physSlice.handle == VK_NULL_HANDLE)
|
if (!physSlice.handle)
|
||||||
xfbBuffers[i] = m_common->dummyResources().bufferHandle();
|
xfbBuffers[i] = m_common->dummyResources().bufferHandle();
|
||||||
|
|
||||||
if (physSlice.handle != VK_NULL_HANDLE) {
|
if (physSlice.handle) {
|
||||||
const Rc<DxvkBuffer>& buffer = m_state.xfb.buffers[i].buffer();
|
Rc<DxvkBuffer> buffer = m_state.xfb.buffers[i].buffer();
|
||||||
buffer->setXfbVertexStride(gsInfo.xfbStrides[i]);
|
buffer->setXfbVertexStride(gsInfo.xfbStrides[i]);
|
||||||
|
|
||||||
m_cmd->track(buffer, DxvkAccess::Write);
|
accessBuffer(DxvkCmdBuffer::ExecBuffer, m_state.xfb.buffers[i],
|
||||||
|
VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
|
||||||
|
VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT);
|
||||||
|
|
||||||
|
m_cmd->track(std::move(buffer), DxvkAccess::Write);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user