mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxvk] Suspend render pass for buffer copies and render pass barriers
No images are directly involved in these, so we can save some layout transitions.
This commit is contained in:
parent
ba698430cb
commit
fe43abbf32
@ -326,7 +326,7 @@ namespace dxvk {
|
|||||||
VkDeviceSize offset,
|
VkDeviceSize offset,
|
||||||
VkDeviceSize length,
|
VkDeviceSize length,
|
||||||
uint32_t value) {
|
uint32_t value) {
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
|
|
||||||
length = align(length, sizeof(uint32_t));
|
length = align(length, sizeof(uint32_t));
|
||||||
auto slice = buffer->getSliceHandle(offset, length);
|
auto slice = buffer->getSliceHandle(offset, length);
|
||||||
@ -355,7 +355,7 @@ namespace dxvk {
|
|||||||
VkDeviceSize offset,
|
VkDeviceSize offset,
|
||||||
VkDeviceSize length,
|
VkDeviceSize length,
|
||||||
VkClearColorValue value) {
|
VkClearColorValue value) {
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
this->unbindComputePipeline();
|
this->unbindComputePipeline();
|
||||||
|
|
||||||
// The view range might have been invalidated, so
|
// The view range might have been invalidated, so
|
||||||
@ -601,7 +601,7 @@ namespace dxvk {
|
|||||||
if (numBytes == 0)
|
if (numBytes == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
|
|
||||||
auto dstSlice = dstBuffer->getSliceHandle(dstOffset, numBytes);
|
auto dstSlice = dstBuffer->getSliceHandle(dstOffset, numBytes);
|
||||||
auto srcSlice = srcBuffer->getSliceHandle(srcOffset, numBytes);
|
auto srcSlice = srcBuffer->getSliceHandle(srcOffset, numBytes);
|
||||||
@ -1878,7 +1878,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
this->invalidateBuffer(buffer, bufferSlice);
|
this->invalidateBuffer(buffer, bufferSlice);
|
||||||
} else {
|
} else {
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
|
|
||||||
bufferSlice = buffer->getSliceHandle(offset, size);
|
bufferSlice = buffer->getSliceHandle(offset, size);
|
||||||
cmdBuffer = DxvkCmdBuffer::ExecBuffer;
|
cmdBuffer = DxvkCmdBuffer::ExecBuffer;
|
||||||
@ -2372,7 +2372,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
void DxvkContext::signalGpuEvent(const Rc<DxvkGpuEvent>& event) {
|
void DxvkContext::signalGpuEvent(const Rc<DxvkGpuEvent>& event) {
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
|
|
||||||
DxvkGpuEventHandle handle = m_common->eventPool().allocEvent();
|
DxvkGpuEventHandle handle = m_common->eventPool().allocEvent();
|
||||||
|
|
||||||
@ -3667,7 +3667,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
// This is necessary because we'll only do hazard
|
// This is necessary because we'll only do hazard
|
||||||
// tracking if the active pipeline has side effects
|
// tracking if the active pipeline has side effects
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_state.gp.pipeline->layout()->pushConstRange().size)
|
if (m_state.gp.pipeline->layout()->pushConstRange().size)
|
||||||
@ -4664,7 +4664,7 @@ namespace dxvk {
|
|||||||
// and execution barriers, so we can use this to allow
|
// and execution barriers, so we can use this to allow
|
||||||
// inter-stage synchronization.
|
// inter-stage synchronization.
|
||||||
if (requiresBarrier)
|
if (requiresBarrier)
|
||||||
this->spillRenderPass();
|
this->spillRenderPass(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user