mirror of
https://github.com/cemu-project/Cemu.git
synced 2026-06-03 21:24:59 -06:00
copy changes from feedback_loop_fewer_barriers, again more validations errors but seems to make more sense this way
This commit is contained in:
parent
55bc72fb34
commit
c0810797e1
@ -1010,14 +1010,13 @@ bool VulkanRenderer::sync_isInputTexturesSyncRequired()
|
|||||||
{
|
{
|
||||||
bool required = false;
|
bool required = false;
|
||||||
auto checkSync = [&](const VkDescriptorSetInfo* info) {
|
auto checkSync = [&](const VkDescriptorSetInfo* info) {
|
||||||
if (info)
|
if (!info)
|
||||||
|
return;
|
||||||
|
for (auto& tex : info->list_fboCandidates)
|
||||||
{
|
{
|
||||||
for (auto& tex : m_state.activeVertexDS->list_fboCandidates)
|
tex->m_vkFlushIndex_read = m_state.currentFlushIndex;
|
||||||
{
|
if (tex->m_vkFlushIndex_write == m_state.currentFlushIndex)
|
||||||
tex->m_vkFlushIndex_read = m_state.currentFlushIndex;
|
required = true;
|
||||||
if (tex->m_vkFlushIndex_write == m_state.currentFlushIndex)
|
|
||||||
required = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
checkSync(m_state.activeVertexDS);
|
checkSync(m_state.activeVertexDS);
|
||||||
@ -1029,6 +1028,7 @@ bool VulkanRenderer::sync_isInputTexturesSyncRequired()
|
|||||||
void VulkanRenderer::sync_RenderPassLoadTextures(CachedFBOVk* fboVk)
|
void VulkanRenderer::sync_RenderPassLoadTextures(CachedFBOVk* fboVk)
|
||||||
{
|
{
|
||||||
bool flushRequired = false;
|
bool flushRequired = false;
|
||||||
|
|
||||||
for (auto& tex : fboVk->GetTextures())
|
for (auto& tex : fboVk->GetTextures())
|
||||||
{
|
{
|
||||||
LatteTextureVk* texVk = (LatteTextureVk*)tex;
|
LatteTextureVk* texVk = (LatteTextureVk*)tex;
|
||||||
@ -1036,26 +1036,28 @@ void VulkanRenderer::sync_RenderPassLoadTextures(CachedFBOVk* fboVk)
|
|||||||
//RAW / WAW
|
//RAW / WAW
|
||||||
if (texVk->m_vkFlushIndex_write == m_state.currentFlushIndex)
|
if (texVk->m_vkFlushIndex_write == m_state.currentFlushIndex)
|
||||||
flushRequired = true;
|
flushRequired = true;
|
||||||
|
//WAR
|
||||||
|
if (texVk->m_vkFlushIndex_read == m_state.currentFlushIndex)
|
||||||
|
flushRequired = true;
|
||||||
|
|
||||||
texVk->m_vkFlushIndex_read = m_state.currentFlushIndex;
|
|
||||||
}
|
}
|
||||||
if (flushRequired)
|
if (flushRequired)
|
||||||
sync_performFlushBarrier();
|
sync_performFlushBarrier();
|
||||||
|
|
||||||
|
for (auto& tex : fboVk->GetTextures())
|
||||||
|
{
|
||||||
|
LatteTextureVk* texVk = (LatteTextureVk*)tex;
|
||||||
|
texVk->m_vkFlushIndex_read = m_state.currentFlushIndex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanRenderer::sync_RenderPassStoreTextures(CachedFBOVk* fboVk)
|
void VulkanRenderer::sync_RenderPassStoreTextures(CachedFBOVk* fboVk)
|
||||||
{
|
{
|
||||||
bool flushRequired = false;
|
|
||||||
for (auto& tex : fboVk->GetTextures())
|
for (auto& tex : fboVk->GetTextures())
|
||||||
{
|
{
|
||||||
LatteTextureVk* texVk = (LatteTextureVk*)tex;
|
LatteTextureVk* texVk = (LatteTextureVk*)tex;
|
||||||
//WAR
|
|
||||||
if (texVk->m_vkFlushIndex_read == m_state.currentFlushIndex)
|
|
||||||
flushRequired = true;
|
|
||||||
texVk->m_vkFlushIndex_write = m_state.currentFlushIndex;
|
texVk->m_vkFlushIndex_write = m_state.currentFlushIndex;
|
||||||
}
|
}
|
||||||
if (flushRequired)
|
|
||||||
sync_performFlushBarrier();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanRenderer::draw_prepareDescriptorSets(PipelineInfo* pipeline_info, VkDescriptorSetInfo*& vertexDS, VkDescriptorSetInfo*& pixelDS, VkDescriptorSetInfo*& geometryDS)
|
void VulkanRenderer::draw_prepareDescriptorSets(PipelineInfo* pipeline_info, VkDescriptorSetInfo*& vertexDS, VkDescriptorSetInfo*& pixelDS, VkDescriptorSetInfo*& geometryDS)
|
||||||
@ -1138,9 +1140,9 @@ void VulkanRenderer::draw_setRenderPass()
|
|||||||
}
|
}
|
||||||
draw_endRenderPass();
|
draw_endRenderPass();
|
||||||
|
|
||||||
|
sync_RenderPassLoadTextures(fboVk);
|
||||||
if (sync_isInputTexturesSyncRequired())
|
if (sync_isInputTexturesSyncRequired())
|
||||||
sync_performFlushBarrier();
|
sync_performFlushBarrier();
|
||||||
sync_RenderPassLoadTextures(fboVk);
|
|
||||||
|
|
||||||
if (m_featureControl.deviceExtensions.dynamic_rendering)
|
if (m_featureControl.deviceExtensions.dynamic_rendering)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user