mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-21 13:54:18 +01:00
[dxvk] Remove incorrect framebuffer-space barriers
We're technically required to use VK_DEPENDENCY_BY_REGION_BIT, but that isn't actually good enough.
This commit is contained in:
parent
803ec3542d
commit
c5676d3108
@ -4344,21 +4344,10 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
void DxvkContext::commitGraphicsPostBarriers() {
|
void DxvkContext::commitGraphicsPostBarriers() {
|
||||||
bool fs = m_state.gp.flags.test(DxvkGraphicsPipelineFlag::HasFsStorageDescriptors);
|
// External subpass dependencies serve as full memory
|
||||||
bool vs = m_state.gp.flags.test(DxvkGraphicsPipelineFlag::HasVsStorageDescriptors);
|
// and execution barriers, so we can use this to allow
|
||||||
|
// inter-stage synchronization.
|
||||||
if (vs) {
|
this->spillRenderPass();
|
||||||
// External subpass dependencies serve as full memory
|
|
||||||
// and execution barriers, so we can use this to allow
|
|
||||||
// inter-stage synchronization.
|
|
||||||
this->spillRenderPass();
|
|
||||||
} else if (fs) {
|
|
||||||
this->emitMemoryBarrier(
|
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
|
||||||
VK_ACCESS_SHADER_WRITE_BIT,
|
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
|
||||||
VK_ACCESS_SHADER_READ_BIT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,17 +151,6 @@ namespace dxvk {
|
|||||||
VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, 0 };
|
VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ops.barrier.srcStages & (
|
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT |
|
|
||||||
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT |
|
|
||||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)) {
|
|
||||||
subpassDeps[subpassDepCount++] = { 0, 0,
|
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
|
||||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
|
||||||
VK_ACCESS_SHADER_WRITE_BIT,
|
|
||||||
VK_ACCESS_SHADER_READ_BIT, 0 };
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ops.barrier.srcStages && ops.barrier.dstStages) {
|
if (ops.barrier.srcStages && ops.barrier.dstStages) {
|
||||||
subpassDeps[subpassDepCount++] = {
|
subpassDeps[subpassDepCount++] = {
|
||||||
0, VK_SUBPASS_EXTERNAL,
|
0, VK_SUBPASS_EXTERNAL,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user