mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxvk] Add function to insert framebuffer read-back barriers
Required for some D3D9 content.
This commit is contained in:
parent
41cb5ab5f7
commit
0a5b427ded
@ -1586,6 +1586,17 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void DxvkContext::emitRenderTargetReadbackBarrier() {
|
||||
if (m_flags.test(DxvkContextFlag::GpRenderPassBound)) {
|
||||
emitMemoryBarrier(VK_DEPENDENCY_BY_REGION_BIT,
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||
VK_ACCESS_SHADER_READ_BIT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DxvkContext::initImage(
|
||||
const Rc<DxvkImage>& image,
|
||||
const VkImageSubresourceRange& subresources,
|
||||
|
@ -608,6 +608,14 @@ namespace dxvk {
|
||||
uint32_t counterDivisor,
|
||||
uint32_t counterBias);
|
||||
|
||||
/**
|
||||
* \brief Emits barrier for render target readback
|
||||
*
|
||||
* Use between draw calls if the fragment shader
|
||||
* reads one of the currently bound render targets.
|
||||
*/
|
||||
void emitRenderTargetReadbackBarrier();
|
||||
|
||||
/**
|
||||
* \brief Generates mip maps
|
||||
*
|
||||
|
@ -151,6 +151,18 @@ namespace dxvk {
|
||||
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_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
|
||||
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
VK_ACCESS_SHADER_READ_BIT,
|
||||
VK_DEPENDENCY_BY_REGION_BIT };
|
||||
}
|
||||
|
||||
if (ops.barrier.srcStages && ops.barrier.dstStages) {
|
||||
subpassDeps[subpassDepCount++] = {
|
||||
0, VK_SUBPASS_EXTERNAL,
|
||||
|
Loading…
x
Reference in New Issue
Block a user